lumia

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

commit fae257684466739cf66a0f1d32f38e86c41c89fd
parent 1061599573f0736206fa697f03963c569e8e9bcb
Author: lumidify <nobody@lumidify.org>
Date:   Mon, 23 Mar 2020 21:22:30 +0100

Add tests for mv

Diffstat:
MTODO | 1+
Mlumia.pl | 18+++++++++---------
Mtests/README | 2++
Mtests/alltests.sh | 1+
Atests/mv.sh | 36++++++++++++++++++++++++++++++++++++
Atests/mv.txt | 32++++++++++++++++++++++++++++++++
6 files changed, 81 insertions(+), 9 deletions(-)

diff --git a/TODO b/TODO @@ -1,2 +1,3 @@ +ALLOW FORCE ON MV AND CP (don't prompt for overwrite) Allow to run command on multiple files but keep checksum (e.g. convmv) update command - if file was edited diff --git a/lumia.pl b/lumia.pl @@ -658,8 +658,6 @@ sub move_rename { return if !defined $dst_cksums; } - return if move_file($src, $dst); - my $files_touched = 0; my $dirs_touched = 0; if (-d $src) { @@ -667,6 +665,9 @@ sub move_rename { } else { $files_touched = 1; } + + return if move_file($src, $dst); + if (exists($src_cksums->{$src_file})) { $dst_cksums->{$dst_file} = $src_cksums->{$src_file}; delete $src_cksums->{$src_file}; @@ -689,11 +690,6 @@ sub move_rename { # $dst: destination directory or file (in latter case only one src is allowed) sub move_files { my ($src, $dst) = @_; - foreach my $src_file (@$src) { - if ($src_file eq ".") { - die "Can't move current directory (.)\n"; - } - } if (!-d $dst && $#$src != 0) { die "move: only one source argument allowed when destination is a file\n"; } @@ -858,7 +854,7 @@ sub update { } } -pod2usage(1) if $#ARGV < 0; +pod2usage(-verbose => 1) if $#ARGV < 0; if ($ARGV[0] eq "mv") { if ($#ARGV < 2) { @@ -948,11 +944,15 @@ if ($ARGV[0] eq "mv") { __END__ +=head1 NAME + +lumia.pl - Manage checksums on a filesystem + =head1 SYNOPSIS B<lumia.pl> command arguments -=head1 COMMANDS +=head1 OPTIONS =over 8 diff --git a/tests/README b/tests/README @@ -1,2 +1,4 @@ All tests must sort the output from lumia.pl since the order in the checksum files is random. + +To run all tests, simply run alltests.sh diff --git a/tests/alltests.sh b/tests/alltests.sh @@ -1,3 +1,4 @@ #!/bin/sh ./runtest.sh filenames +./runtest.sh mv diff --git a/tests/mv.sh b/tests/mv.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +mkdir tmp +cd tmp +mkdir a +mkdir b +mkdir c + +../../lumia.pl addnew | sort +cat .lumidify_archive_dirs | sort +../../lumia.pl mv a b +cat .lumidify_archive_dirs | sort +cat b/.lumidify_archive_dirs | sort +../../lumia.pl mv b b +../../lumia.pl mv c d +cat .lumidify_archive_dirs | sort +touch tmp1 +touch tmp2 +touch tmp3 +../../lumia.pl addnew | sort +cat .lumidify_archive_cksums | sort +../../lumia.pl mv tmp1 tmp4 | sort +cat .lumidify_archive_cksums | sort +../../lumia.pl mv b tmp2 +../../lumia.pl mv tmp2 tmp3 tmp4 +../../lumia.pl mv tmp3 b tmp4 +echo "y" | ../../lumia.pl mv ./ c +../../lumia.pl mkdir final +../../lumia.pl mv * final +cat .lumidify_archive_dirs | sort +cat .lumidify_archive_cksums | sort +cat final/.lumidify_archive_dirs | sort +cat final/.lumidify_archive_cksums | sort + +cd .. +rm -r tmp diff --git a/tests/mv.txt b/tests/mv.txt @@ -0,0 +1,32 @@ +Added "./a" +Added "./b" +Added "./c" +"a" +"b" +"c" +"b" +"c" +"a" +mv: rename ./b to b/b: Invalid argument +"b" +"d" +Added "./tmp1" +Added "./tmp2" +Added "./tmp3" +4294967295 0 "tmp1" +4294967295 0 "tmp2" +4294967295 0 "tmp3" +4294967295 0 "tmp2" +4294967295 0 "tmp3" +4294967295 0 "tmp4" +move: can't move directory to file +move: only one source argument allowed when destination is a file +move: only one source argument allowed when destination is a file +mv: rename ./ to c: Invalid argument +mv: rename ./final to final/final: Invalid argument +"final" +"b" +"d" +4294967295 0 "tmp2" +4294967295 0 "tmp3" +4294967295 0 "tmp4"