diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2020-01-18 17:18:42 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2020-01-19 09:45:55 +0200 |
commit | e3d9037c37a934718c9bc8fb196006fa7c002ac0 (patch) | |
tree | 29a36b983d14afe9ba89e7d4128ce00a8cec09e9 /t | |
download | file-backup-e3d9037c37a934718c9bc8fb196006fa7c002ac0.tar.gz file-backup-e3d9037c37a934718c9bc8fb196006fa7c002ac0.tar.bz2 |
Initial commit
Diffstat (limited to 't')
-rw-r--r-- | t/00simple.t | 19 | ||||
-rw-r--r-- | t/01numbered.t | 19 | ||||
-rw-r--r-- | t/02auto.t | 22 | ||||
-rw-r--r-- | t/03backup.t | 32 | ||||
-rw-r--r-- | t/04envar.t | 33 | ||||
-rw-r--r-- | t/TestBackup.pm | 40 |
6 files changed, 165 insertions, 0 deletions
diff --git a/t/00simple.t b/t/00simple.t new file mode 100644 index 0000000..d3444de --- /dev/null +++ b/t/00simple.t @@ -0,0 +1,19 @@ +# -*- perl -*- +use lib qw(t lib); +use strict; +use TestBackup; +use File::Backup; + +plan test => 4; + +makefile('a'); + +my $name = backup_simple('a'); +ok($name, 'a~'); +fileok('a', $name); + +$name = backup_simple('a'); +ok($name, 'a~'); +fileok('a', $name); + + diff --git a/t/01numbered.t b/t/01numbered.t new file mode 100644 index 0000000..a464684 --- /dev/null +++ b/t/01numbered.t @@ -0,0 +1,19 @@ +# -*- perl -*- +use lib qw(t lib); +use strict; +use TestBackup; +use File::Backup; + +plan test => 4; + +makefile('a'); + +my $name = backup_numbered('a'); +ok($name, 'a.~1~'); +fileok('a', $name); + +$name = backup_numbered('a'); +ok($name, 'a.~2~'); +fileok('a', $name); + + diff --git a/t/02auto.t b/t/02auto.t new file mode 100644 index 0000000..354e136 --- /dev/null +++ b/t/02auto.t @@ -0,0 +1,22 @@ +# -*- perl -*- +use lib qw(t lib); +use strict; +use TestBackup; +use File::Backup; + +plan test => 6; + +makefile('a'); + +my $name = backup_auto('a'); +ok($name, 'a~'); +fileok('a', $name); + +$name = backup_numbered('a'); +ok($name, 'a.~1~'); +fileok('a', $name); + +$name = backup_auto('a'); +ok($name, 'a.~2~'); +fileok('a', $name); + diff --git a/t/03backup.t b/t/03backup.t new file mode 100644 index 0000000..136294f --- /dev/null +++ b/t/03backup.t @@ -0,0 +1,32 @@ +# -*- perl -*- +use lib qw(t lib); +use strict; +use TestBackup; +use File::Backup; + +plan test => 11; + +makefile('a'); + +my $name = backup('a',BACKUP_NONE); +ok(!defined($name)); + +$name = backup('a',BACKUP_SIMPLE); +ok($name, 'a~'); +fileok('a', $name); + +$name = backup('a',BACKUP_AUTO); +ok($name, 'a~'); +fileok('a', $name); + +$name = backup('a',BACKUP_NUMBERED); +ok($name, 'a.~1~'); +fileok('a', $name); + +$name = backup('a',BACKUP_AUTO); +ok($name, 'a.~2~'); +fileok('a', $name); + +$name = backup('a'); +ok($name, 'a.~3~'); +fileok('a', $name); diff --git a/t/04envar.t b/t/04envar.t new file mode 100644 index 0000000..f87f355 --- /dev/null +++ b/t/04envar.t @@ -0,0 +1,33 @@ +# -*- perl -*- +use lib qw(t lib); +use strict; +use TestBackup; +use File::Backup; + +plan test => 16; + +makefile('a'); + +sub test_envar { + my ($val, $exp) = @_; + $ENV{VERSION_CONTROL} = $val; + my $name = backup('a'); + if (defined($exp)) { + ok($name,$exp); + fileok($name,'a'); + } else { + ok(!defined($name)); + } +} + +test_envar 'none'; +test_envar 'off'; +test_envar 'never', 'a~'; +test_envar 'simple', 'a~'; +test_envar 'numbered', 'a.~1~'; +test_envar 't', 'a.~2~'; +test_envar 'nil', 'a.~3~'; +test_envar 'existing', 'a.~4~'; +unlink qw(a.~1~ a.~2~ a.~3~ a.~4~); +test_envar 'existing', 'a~'; + diff --git a/t/TestBackup.pm b/t/TestBackup.pm new file mode 100644 index 0000000..0679776 --- /dev/null +++ b/t/TestBackup.pm @@ -0,0 +1,40 @@ +package TestBackup; +use File::Cmp qw(fcmp); +use File::Temp qw(tempdir); +use Exporter; +use re '/aa'; +use Carp; +use Test; + +our @ISA = qw(Test); +our @EXPORT=qw(makefile fileok plan ok); + +sub import { + my $pkg = shift; + my $workdir = tempdir(CLEANUP => 1); + chdir($workdir) or croak "can't change to $workdir: $!"; + @pattern = grep { /[\w\d]+/ } map { chr($_) } (1..127); + delete $ENV{VERSION_CONTROL}; + $pkg->export_to_level(1, @_); +} + +sub makefile { + my $file = shift; + my $size = shift // 1024; + + open(FH, '>', $file) or croak "can't create file $file (wd $workdir): $!"; + while ($size) { + my $n = @pattern; + $n = $size if $n > $size; + syswrite(FH, join('',@pattern[0..$n])) or + croak "write error creating $file: $!"; + $size -= $n; + } + close FH +} + +sub fileok { + ok(fcmp(@_)); +} + +1; |