aboutsummaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2020-01-18 17:18:42 +0200
committerSergey Poznyakoff <gray@gnu.org>2020-01-19 09:45:55 +0200
commite3d9037c37a934718c9bc8fb196006fa7c002ac0 (patch)
tree29a36b983d14afe9ba89e7d4128ce00a8cec09e9 /t
downloadfile-backup-e3d9037c37a934718c9bc8fb196006fa7c002ac0.tar.gz
file-backup-e3d9037c37a934718c9bc8fb196006fa7c002ac0.tar.bz2
Initial commit
Diffstat (limited to 't')
-rw-r--r--t/00simple.t19
-rw-r--r--t/01numbered.t19
-rw-r--r--t/02auto.t22
-rw-r--r--t/03backup.t32
-rw-r--r--t/04envar.t33
-rw-r--r--t/TestBackup.pm40
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;

Return to:

Send suggestions and report system problems to the System administrator.