basic tests for snapshot handling
Robert 'phaylon' Sedlacek [Wed, 23 May 2012 22:20:20 +0000 (22:20 +0000)]
t/basic.t [new file with mode: 0644]

diff --git a/t/basic.t b/t/basic.t
new file mode 100644 (file)
index 0000000..861db95
--- /dev/null
+++ b/t/basic.t
@@ -0,0 +1,55 @@
+use strictures 1;
+use Test::More;
+
+use File::Tree::Snapshot;
+use File::Path qw( rmtree );
+use FindBin;
+
+my $tree_path = "$FindBin::Bin/test-tree";
+
+my $tree = File::Tree::Snapshot->new(
+    storage_path    => $tree_path,
+);
+
+ok not($tree->exists), 'tree doesnt exist yet';
+ok $tree->create, 'tree creation successful';
+ok $tree->exists, 'tree does now exit';
+
+do {
+  ok(my $fh = $tree->open('>', 'foo/bar.txt', mkpath => 1), 'open file');
+  print $fh "baz";
+  close $fh;
+};
+
+my ($file) = $tree->find_files('txt', 'foo');
+ok -e $file, 'written file exists';
+
+ok $tree->commit, 'commit';
+ok $tree->reset, 'reset';
+ok -e $file, 'file still exists';
+
+do {
+  ok(my $fh = $tree->open('>', 'foo/bar.txt', mkpath => 1), 'open file again');
+  print $fh "qux";
+  close $fh;
+};
+
+do {
+  ok(my $fh = $tree->open('>', 'foo/baz.txt', mkpath => 1), 'open other file');
+  print $fh "qux";
+  close $fh;
+};
+
+ok $tree->reset, 'reset before commit';
+ok -e $tree->file('foo/bar.txt'), 'original file still exists';
+ok not(-e $tree->file('foo/baz.txt')), 'new file no longer exists';
+
+do {
+  my $fh = $tree->open('<', 'foo/bar.txt');
+  my $body = do { local $/; <$fh> };
+  is $body, 'baz', 'reset to original content';
+};
+
+rmtree $tree_path;
+
+done_testing;