From 4d326930a84561f9ab4a530f67dafe042422435e Mon Sep 17 00:00:00 2001 From: Florian Pritz Date: Sun, 9 Sep 2018 18:04:35 +0200 Subject: Test if adding an archive updates existing rows correctly Signed-off-by: Florian Pritz --- t/handle_added_archives_with_db.t | 79 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/t/handle_added_archives_with_db.t b/t/handle_added_archives_with_db.t index e090e25..c8b0ff8 100644 --- a/t/handle_added_archives_with_db.t +++ b/t/handle_added_archives_with_db.t @@ -51,6 +51,85 @@ for my $in_memory (0,1) { eq_or_diff($db->get_archives_for_path('boot/test1/f3'), [{archive => 'archive-1', modification_time => 3},]); eq_or_diff($db->get_archives_for_path('boot/test1/f4'), [{archive => 'archive-1', modification_time => 2},]); eq_or_diff($db->get_archives_for_path('lulz'), [{archive => 'archive-1', modification_time => undef},]); + + + # add second archive + $borg->set_list('borg_list', ['archive-1', 'archive-2']); + $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"); + $cb->("XXX, 1970-01-01 00:00:02 boot/test1"); + $cb->("XXX, 1970-01-01 00:00:03 boot/test1/f1"); + $cb->("XXX, 1970-01-01 00:00:05 boot/test1/f2"); + $cb->("XXX, 1970-01-01 00:00:03 boot/test1/f3"); + $cb->("XXX, 1970-01-01 00:00:02 boot/test1/f4"); + $cb->("XXX, 1970-01-01 00:00:07 boot/test1/f5"); + } ); + $app->_handle_added_archives(['archive-2']); + + # check database content + eq_or_diff($db->get_archives_for_path('.'), [ + {archive => 'archive-1', modification_time => undef}, + {archive => 'archive-2', modification_time => undef}, + ]); + eq_or_diff($db->get_archives_for_path('boot'), [ + {archive => 'archive-1', modification_time => 20}, + {archive => 'archive-2', modification_time => 20}, + ]); + eq_or_diff($db->get_archives_for_path('boot/foo'), [ + {archive => 'archive-1', modification_time => 19}, + {archive => 'archive-2', modification_time => 19}, + ]); + eq_or_diff($db->get_archives_for_path('boot/foo/bar'), [ + {archive => 'archive-1', modification_time => 19}, + {archive => 'archive-2', modification_time => 19}, + ]); + eq_or_diff($db->get_archives_for_path('boot/foo/blub'), [ + {archive => 'archive-1', modification_time => 13}, + {archive => 'archive-2', modification_time => 13}, + ]); + eq_or_diff($db->get_archives_for_path('boot/grub'), [ + {archive => 'archive-1', modification_time => 20}, + {archive => 'archive-2', modification_time => 20}, + ]); + eq_or_diff($db->get_archives_for_path('boot/grub/grub.cfg'), [ + {archive => 'archive-1', modification_time => 8}, + {archive => 'archive-2', modification_time => 8}, + ]); + eq_or_diff($db->get_archives_for_path('boot/test1'), [ + {archive => 'archive-1', modification_time => 4}, + {archive => 'archive-2', modification_time => 7}, + ]); + eq_or_diff($db->get_archives_for_path('boot/test1/f1'), [ + {archive => 'archive-1', modification_time => 3}, + {archive => 'archive-2', modification_time => 3}, + ]); + eq_or_diff($db->get_archives_for_path('boot/test1/f2'), [ + {archive => 'archive-1', modification_time => 4}, + {archive => 'archive-2', modification_time => 5}, + ]); + eq_or_diff($db->get_archives_for_path('boot/test1/f3'), [ + {archive => 'archive-1', modification_time => 3}, + {archive => 'archive-2', modification_time => 3}, + ]); + eq_or_diff($db->get_archives_for_path('boot/test1/f4'), [ + {archive => 'archive-1', modification_time => 2}, + {archive => 'archive-2', modification_time => 2}, + ]); + eq_or_diff($db->get_archives_for_path('boot/test1/f5'), [ + {archive => 'archive-1', modification_time => undef}, + {archive => 'archive-2', modification_time => 7}, + ]); + eq_or_diff($db->get_archives_for_path('lulz'), [ + {archive => 'archive-1', modification_time => undef}, + {archive => 'archive-2', modification_time => undef}, + ]); } -- cgit v1.2.3-24-g4f1b