tFix error in rm; start adding tests - lumia - Archive checksum manager
HTML git clone git://lumidify.org/git/lumia.git
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
DIR commit 1061599573f0736206fa697f03963c569e8e9bcb
DIR parent 7cbb7faab069d95a8822fbfde5dded1f38d15c1f
HTML Author: lumidify <nobody@lumidify.org>
Date: Mon, 23 Mar 2020 20:40:20 +0100
Fix error in rm; start adding tests
Diffstat:
M lumia.pl | 3 ++-
D test/.lumidify_archive_cksums | 4 ----
D test/.lumidify_archive_cksums.cksum | 2 --
D test/.lumidify_archive_dirs | 3 ---
D test/bob1 | 1 -
D test/bob2 | 0
D test/bob3 | 1 -
D test/dir2/.lumidify_archive_cksums | 1 -
D test/dir2/.lumidify_archive_cksums… | 2 --
D test/dir2/.lumidify_archive_dirs | 1 -
D test/dir2/dir/.lumidify_archive_ck… | 1 -
D test/dir2/dir/.lumidify_archive_ck… | 2 --
D test/dir2/dir/.lumidify_archive_di… | 0
D test/dir2/dir/meh | 0
D test/dir2/meh | 1 -
D test/dir3/.lumidify_archive_cksums | 1 -
D test/dir3/.lumidify_archive_cksums… | 2 --
D test/dir3/.lumidify_archive_dirs | 0
D test/dir3/meh | 0
D test/dir4/.lumidify_archive_cksums | 1 -
D test/dir4/.lumidify_archive_cksums… | 2 --
D test/dir4/.lumidify_archive_dirs | 1 -
D test/dir4/bob | 0
D test/dir4/dir/.lumidify_archive_ck… | 1 -
D test/dir4/dir/.lumidify_archive_ck… | 2 --
D test/dir4/dir/.lumidify_archive_di… | 0
D test/dir4/dir/bob | 0
D test/fred2 | 1 -
A tests/README | 2 ++
A tests/alltests.sh | 3 +++
A tests/filenames.sh | 21 +++++++++++++++++++++
A tests/filenames.txt | 38 +++++++++++++++++++++++++++++++
A tests/runtest.sh | 12 ++++++++++++
33 files changed, 78 insertions(+), 31 deletions(-)
---
DIR diff --git a/lumia.pl b/lumia.pl
t@@ -375,6 +375,7 @@ sub check_add_new_files {
warn "Checksum files corrupt in \"$_[0]\", not adding new checksums!\n";
return 0;
}
+
} else {
write_cksums($_[0], {}, 1, 1);
}
t@@ -755,12 +756,12 @@ sub remove_from_same_dir {
next;
}
if (exists $cksums->{$file}) {
- delete $cksums->{$file};
if (defined $cksums->{$file}) {
$files_touched = 1;
} else {
$dirs_touched = 1;
}
+ delete $cksums->{$file};
} else {
warn "WARNING: \"$file\" not in cksum or directory list.\n";
}
DIR diff --git a/test/.lumidify_archive_cksums b/test/.lumidify_archive_cksums
t@@ -1,4 +0,0 @@
-2454254050 2 "bob3"
-2418082923 2 "bob1"
-2454254050 2 "fred2"
-4294967295 0 "bob2"
DIR diff --git a/test/.lumidify_archive_cksums.cksum b/test/.lumidify_archive_cksums.cksum
t@@ -1,2 +0,0 @@
-2943189886 81 ".lumidify_archive_cksums"
-3971863640 21 ".lumidify_archive_dirs"
DIR diff --git a/test/.lumidify_archive_dirs b/test/.lumidify_archive_dirs
t@@ -1,3 +0,0 @@
-"dir2"
-"dir3"
-"dir4"
DIR diff --git a/test/bob1 b/test/bob1
t@@ -1 +0,0 @@
-a
DIR diff --git a/test/bob2 b/test/bob2
DIR diff --git a/test/bob3 b/test/bob3
t@@ -1 +0,0 @@
-b
DIR diff --git a/test/dir2/.lumidify_archive_cksums b/test/dir2/.lumidify_archive_cksums
t@@ -1 +0,0 @@
-2418082923 2 "meh"
DIR diff --git a/test/dir2/.lumidify_archive_cksums.cksum b/test/dir2/.lumidify_archive_cksums.cksum
t@@ -1,2 +0,0 @@
-137730780 6 ".lumidify_archive_dirs"
-3978068116 19 ".lumidify_archive_cksums"
DIR diff --git a/test/dir2/.lumidify_archive_dirs b/test/dir2/.lumidify_archive_dirs
t@@ -1 +0,0 @@
-"dir"
DIR diff --git a/test/dir2/dir/.lumidify_archive_cksums b/test/dir2/dir/.lumidify_archive_cksums
t@@ -1 +0,0 @@
-4294967295 0 "meh"
DIR diff --git a/test/dir2/dir/.lumidify_archive_cksums.cksum b/test/dir2/dir/.lumidify_archive_cksums.cksum
t@@ -1,2 +0,0 @@
-43109071 19 ".lumidify_archive_cksums"
-4294967295 0 ".lumidify_archive_dirs"
DIR diff --git a/test/dir2/dir/.lumidify_archive_dirs b/test/dir2/dir/.lumidify_archive_dirs
DIR diff --git a/test/dir2/dir/meh b/test/dir2/dir/meh
DIR diff --git a/test/dir2/meh b/test/dir2/meh
t@@ -1 +0,0 @@
-a
DIR diff --git a/test/dir3/.lumidify_archive_cksums b/test/dir3/.lumidify_archive_cksums
t@@ -1 +0,0 @@
-4294967295 0 "meh"
DIR diff --git a/test/dir3/.lumidify_archive_cksums.cksum b/test/dir3/.lumidify_archive_cksums.cksum
t@@ -1,2 +0,0 @@
-4294967295 0 ".lumidify_archive_dirs"
-43109071 19 ".lumidify_archive_cksums"
DIR diff --git a/test/dir3/.lumidify_archive_dirs b/test/dir3/.lumidify_archive_dirs
DIR diff --git a/test/dir3/meh b/test/dir3/meh
DIR diff --git a/test/dir4/.lumidify_archive_cksums b/test/dir4/.lumidify_archive_cksums
t@@ -1 +0,0 @@
-4294967295 0 "bob"
DIR diff --git a/test/dir4/.lumidify_archive_cksums.cksum b/test/dir4/.lumidify_archive_cksums.cksum
t@@ -1,2 +0,0 @@
-202046376 19 ".lumidify_archive_cksums"
-137730780 6 ".lumidify_archive_dirs"
DIR diff --git a/test/dir4/.lumidify_archive_dirs b/test/dir4/.lumidify_archive_dirs
t@@ -1 +0,0 @@
-"dir"
DIR diff --git a/test/dir4/bob b/test/dir4/bob
DIR diff --git a/test/dir4/dir/.lumidify_archive_cksums b/test/dir4/dir/.lumidify_archive_cksums
t@@ -1 +0,0 @@
-4294967295 0 "bob"
DIR diff --git a/test/dir4/dir/.lumidify_archive_cksums.cksum b/test/dir4/dir/.lumidify_archive_cksums.cksum
t@@ -1,2 +0,0 @@
-202046376 19 ".lumidify_archive_cksums"
-4294967295 0 ".lumidify_archive_dirs"
DIR diff --git a/test/dir4/dir/.lumidify_archive_dirs b/test/dir4/dir/.lumidify_archive_dirs
DIR diff --git a/test/dir4/dir/bob b/test/dir4/dir/bob
DIR diff --git a/test/fred2 b/test/fred2
t@@ -1 +0,0 @@
-b
DIR diff --git a/tests/README b/tests/README
t@@ -0,0 +1,2 @@
+All tests must sort the output from lumia.pl since the
+order in the checksum files is random.
DIR diff --git a/tests/alltests.sh b/tests/alltests.sh
t@@ -0,0 +1,3 @@
+#!/bin/sh
+
+./runtest.sh filenames
DIR diff --git a/tests/filenames.sh b/tests/filenames.sh
t@@ -0,0 +1,21 @@
+#!/bin/sh
+
+mkdir tmp
+cd tmp
+mkdir -- ' a'
+mkdir -- '-b'
+mkdir -- '-c
+
+'
+touch -- ' a/-d'
+touch -- '-b/$\%")'
+cd ..
+
+../lumia.pl addnew tmp
+../lumia.pl check tmp | sort
+cat 'tmp/ a/.lumidify_archive_cksums' | sort
+../lumia.pl rm 'tmp/ a/-d'
+cat 'tmp/ a/.lumidify_archive_cksums' | sort
+../lumia.pl check tmp/-b | sort
+../lumia.pl check tmp | sort
+rm -rf tmp
DIR diff --git a/tests/filenames.txt b/tests/filenames.txt
t@@ -0,0 +1,38 @@
+Added "tmp/ a"
+Added "tmp/-b"
+Added "tmp/-c
+
+"
+Added "tmp/ a/-d"
+Added "tmp/-b/$\%")"
+
+
+/.lumidify_archive_cksums
+/.lumidify_archive_dirs
+OK tmp/ a/-d
+OK tmp/ a/.lumidify_archive_cksums
+OK tmp/ a/.lumidify_archive_dirs
+OK tmp/-b/$\%")
+OK tmp/-b/.lumidify_archive_cksums
+OK tmp/-b/.lumidify_archive_dirs
+OK tmp/-c
+OK tmp/-c
+OK tmp/.lumidify_archive_cksums
+OK tmp/.lumidify_archive_dirs
+4294967295 0 "-d"
+OK tmp/-b/$\%")
+OK tmp/-b/.lumidify_archive_cksums
+OK tmp/-b/.lumidify_archive_dirs
+
+
+/.lumidify_archive_cksums
+/.lumidify_archive_dirs
+OK tmp/ a/.lumidify_archive_cksums
+OK tmp/ a/.lumidify_archive_dirs
+OK tmp/-b/$\%")
+OK tmp/-b/.lumidify_archive_cksums
+OK tmp/-b/.lumidify_archive_dirs
+OK tmp/-c
+OK tmp/-c
+OK tmp/.lumidify_archive_cksums
+OK tmp/.lumidify_archive_dirs
DIR diff --git a/tests/runtest.sh b/tests/runtest.sh
t@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Sure, eval may not be recommended practice, but then
+# again, these are just tests...
+eval "./$1.sh" > runtest.txt 2>&1
+diff $1.txt runtest.txt > /dev/null
+if [ $? -eq 0 ]; then
+ echo "OK $1"
+else
+ echo "FAILED $1"
+fi
+rm runtest.txt