lumia

Archive checksum manager
git clone git://lumidify.org/git/lumia.git
Log | Files | Refs

commit 1061599573f0736206fa697f03963c569e8e9bcb
parent 7cbb7faab069d95a8822fbfde5dded1f38d15c1f
Author: lumidify <nobody@lumidify.org>
Date:   Mon, 23 Mar 2020 20:40:20 +0100

Fix error in rm; start adding tests

Diffstat:
Mlumia.pl | 3++-
Dtest/.lumidify_archive_cksums | 4----
Dtest/.lumidify_archive_cksums.cksum | 2--
Dtest/.lumidify_archive_dirs | 3---
Dtest/bob1 | 1-
Dtest/bob2 | 0
Dtest/bob3 | 1-
Dtest/dir2/.lumidify_archive_cksums | 1-
Dtest/dir2/.lumidify_archive_cksums.cksum | 2--
Dtest/dir2/.lumidify_archive_dirs | 1-
Dtest/dir2/dir/.lumidify_archive_cksums | 1-
Dtest/dir2/dir/.lumidify_archive_cksums.cksum | 2--
Dtest/dir2/dir/.lumidify_archive_dirs | 0
Dtest/dir2/dir/meh | 0
Dtest/dir2/meh | 1-
Dtest/dir3/.lumidify_archive_cksums | 1-
Dtest/dir3/.lumidify_archive_cksums.cksum | 2--
Dtest/dir3/.lumidify_archive_dirs | 0
Dtest/dir3/meh | 0
Dtest/dir4/.lumidify_archive_cksums | 1-
Dtest/dir4/.lumidify_archive_cksums.cksum | 2--
Dtest/dir4/.lumidify_archive_dirs | 1-
Dtest/dir4/bob | 0
Dtest/dir4/dir/.lumidify_archive_cksums | 1-
Dtest/dir4/dir/.lumidify_archive_cksums.cksum | 2--
Dtest/dir4/dir/.lumidify_archive_dirs | 0
Dtest/dir4/dir/bob | 0
Dtest/fred2 | 1-
Atests/README | 2++
Atests/alltests.sh | 3+++
Atests/filenames.sh | 21+++++++++++++++++++++
Atests/filenames.txt | 38++++++++++++++++++++++++++++++++++++++
Atests/runtest.sh | 12++++++++++++
33 files changed, 78 insertions(+), 31 deletions(-)

diff --git a/lumia.pl b/lumia.pl @@ -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); } @@ -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"; } diff --git a/test/.lumidify_archive_cksums b/test/.lumidify_archive_cksums @@ -1,4 +0,0 @@ -2454254050 2 "bob3" -2418082923 2 "bob1" -2454254050 2 "fred2" -4294967295 0 "bob2" diff --git a/test/.lumidify_archive_cksums.cksum b/test/.lumidify_archive_cksums.cksum @@ -1,2 +0,0 @@ -2943189886 81 ".lumidify_archive_cksums" -3971863640 21 ".lumidify_archive_dirs" diff --git a/test/.lumidify_archive_dirs b/test/.lumidify_archive_dirs @@ -1,3 +0,0 @@ -"dir2" -"dir3" -"dir4" diff --git a/test/bob1 b/test/bob1 @@ -1 +0,0 @@ -a diff --git a/test/bob2 b/test/bob2 diff --git a/test/bob3 b/test/bob3 @@ -1 +0,0 @@ -b diff --git a/test/dir2/.lumidify_archive_cksums b/test/dir2/.lumidify_archive_cksums @@ -1 +0,0 @@ -2418082923 2 "meh" diff --git a/test/dir2/.lumidify_archive_cksums.cksum b/test/dir2/.lumidify_archive_cksums.cksum @@ -1,2 +0,0 @@ -137730780 6 ".lumidify_archive_dirs" -3978068116 19 ".lumidify_archive_cksums" diff --git a/test/dir2/.lumidify_archive_dirs b/test/dir2/.lumidify_archive_dirs @@ -1 +0,0 @@ -"dir" diff --git a/test/dir2/dir/.lumidify_archive_cksums b/test/dir2/dir/.lumidify_archive_cksums @@ -1 +0,0 @@ -4294967295 0 "meh" diff --git a/test/dir2/dir/.lumidify_archive_cksums.cksum b/test/dir2/dir/.lumidify_archive_cksums.cksum @@ -1,2 +0,0 @@ -43109071 19 ".lumidify_archive_cksums" -4294967295 0 ".lumidify_archive_dirs" diff --git a/test/dir2/dir/.lumidify_archive_dirs b/test/dir2/dir/.lumidify_archive_dirs diff --git a/test/dir2/dir/meh b/test/dir2/dir/meh diff --git a/test/dir2/meh b/test/dir2/meh @@ -1 +0,0 @@ -a diff --git a/test/dir3/.lumidify_archive_cksums b/test/dir3/.lumidify_archive_cksums @@ -1 +0,0 @@ -4294967295 0 "meh" diff --git a/test/dir3/.lumidify_archive_cksums.cksum b/test/dir3/.lumidify_archive_cksums.cksum @@ -1,2 +0,0 @@ -4294967295 0 ".lumidify_archive_dirs" -43109071 19 ".lumidify_archive_cksums" diff --git a/test/dir3/.lumidify_archive_dirs b/test/dir3/.lumidify_archive_dirs diff --git a/test/dir3/meh b/test/dir3/meh diff --git a/test/dir4/.lumidify_archive_cksums b/test/dir4/.lumidify_archive_cksums @@ -1 +0,0 @@ -4294967295 0 "bob" diff --git a/test/dir4/.lumidify_archive_cksums.cksum b/test/dir4/.lumidify_archive_cksums.cksum @@ -1,2 +0,0 @@ -202046376 19 ".lumidify_archive_cksums" -137730780 6 ".lumidify_archive_dirs" diff --git a/test/dir4/.lumidify_archive_dirs b/test/dir4/.lumidify_archive_dirs @@ -1 +0,0 @@ -"dir" diff --git a/test/dir4/bob b/test/dir4/bob diff --git a/test/dir4/dir/.lumidify_archive_cksums b/test/dir4/dir/.lumidify_archive_cksums @@ -1 +0,0 @@ -4294967295 0 "bob" diff --git a/test/dir4/dir/.lumidify_archive_cksums.cksum b/test/dir4/dir/.lumidify_archive_cksums.cksum @@ -1,2 +0,0 @@ -202046376 19 ".lumidify_archive_cksums" -4294967295 0 ".lumidify_archive_dirs" diff --git a/test/dir4/dir/.lumidify_archive_dirs b/test/dir4/dir/.lumidify_archive_dirs diff --git a/test/dir4/dir/bob b/test/dir4/dir/bob diff --git a/test/fred2 b/test/fred2 @@ -1 +0,0 @@ -b diff --git a/tests/README b/tests/README @@ -0,0 +1,2 @@ +All tests must sort the output from lumia.pl since the +order in the checksum files is random. diff --git a/tests/alltests.sh b/tests/alltests.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +./runtest.sh filenames diff --git a/tests/filenames.sh b/tests/filenames.sh @@ -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 diff --git a/tests/filenames.txt b/tests/filenames.txt @@ -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 diff --git a/tests/runtest.sh b/tests/runtest.sh @@ -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