From 13f51c2044fb22f6b3cb8c674a23fe636f7fb33d Mon Sep 17 00:00:00 2001 From: Florian Pritz Date: Sun, 19 Aug 2018 14:48:47 +0200 Subject: Reorganize tests Signed-off-by: Florian Pritz --- t/handle_added_archives.t | 53 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 t/handle_added_archives.t (limited to 't/handle_added_archives.t') diff --git a/t/handle_added_archives.t b/t/handle_added_archives.t new file mode 100644 index 0000000..c2b8e78 --- /dev/null +++ b/t/handle_added_archives.t @@ -0,0 +1,53 @@ +use strict; +use warnings; + +use POSIX qw(tzset); +use Test::Differences; +use Test::MockObject; +use Test::More; + +use App::BorgRestore; + +# Only log calls to $db->add_path +my $db = Test::MockObject->new(); +$db->set_true(qw(add_path -begin_work -commit -vacuum -add_archive_name -verify_cache_fill_rate_ok)); +$db->mock('-get_archive_id', sub {return 'prefix-archive-1' if $_[1] eq 'archive-1';}); +$db->mock('-get_archive_names', sub {return []}); + +$ENV{TZ} = 'UTC'; +tzset; + +my $borg = Test::MockObject->new(); +$borg->set_list('borg_list', ['archive-1']); +$borg->mock('list_archive', sub { + my ($self, $archive, $cb) = @_; + $cb->("XXX, 1970-01-01 00:00:05 ."); + $cb->("XXX, 1970-01-01 00:00:10 boot"); + $cb->("XXX, 1970-01-01 00:00:20 boot/grub"); + $cb->("XXX, 1970-01-01 00:00:08 boot/grub/grub.cfg"); + $cb->("XXX, 1970-01-01 00:00:13 boot/foo"); + $cb->("XXX, 1970-01-01 00:00:13 boot/foo/blub"); + $cb->("XXX, 1970-01-01 00:00:19 boot/foo/bar"); + } ); + +# Call the actual function we want to test +my $app = App::BorgRestore->new({borg => $borg, db => $db}); +$app->_handle_added_archives(['archive-1']); + +# Check if $db->add_path has been called properly +my (@calls, @a); +push @calls, [@a] while @a = $db->next_call(); + +# sort by path +@calls = sort {$a->[1][2] cmp $b->[1][2];} @calls; + +eq_or_diff(\@calls, [ + ['add_path', [$db, 'prefix-archive-1', 'boot', 20]], + ['add_path', [$db, 'prefix-archive-1', 'boot/foo', 19]], + ['add_path', [$db, 'prefix-archive-1', 'boot/foo/bar', 19]], + ['add_path', [$db, 'prefix-archive-1', 'boot/foo/blub', 13]], + ['add_path', [$db, 'prefix-archive-1', 'boot/grub', 20]], + ['add_path', [$db, 'prefix-archive-1', 'boot/grub/grub.cfg', 8]], + ], "Database is populated with the correct timestamps"); + +done_testing; -- cgit v1.2.3-24-g4f1b