diff options
Diffstat (limited to 'rdiff-backup/testing/commontest.py')
-rw-r--r-- | rdiff-backup/testing/commontest.py | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/rdiff-backup/testing/commontest.py b/rdiff-backup/testing/commontest.py index 6221866..04f2a8a 100644 --- a/rdiff-backup/testing/commontest.py +++ b/rdiff-backup/testing/commontest.py @@ -130,6 +130,7 @@ def InternalRestore(mirror_local, dest_local, mirror_dir, dest_dir, time): mirror_rp, dest_rp = SetConnections.InitRPs([mirror_dir, dest_dir], remote_schema) + Time.setcurtime() inc = get_increment_rp(mirror_rp, time) if inc: _get_main().Restore(get_increment_rp(mirror_rp, time), dest_rp) @@ -163,7 +164,8 @@ def _get_main(): return Globals.Main def CompareRecursive(src_rp, dest_rp, compare_hardlinks = 1, - equality_func = None, exclude_rbdir = 1): + equality_func = None, exclude_rbdir = 1, + ignore_tmp_files = None): """Compare src_rp and dest_rp, which can be directories This only compares file attributes, not the actual data. This @@ -179,6 +181,16 @@ def CompareRecursive(src_rp, dest_rp, compare_hardlinks = 1, compare_hardlinks), 3) src_select = Select(DSRPath(1, src_rp)) dest_select = Select(DSRPath(None, dest_rp)) + + if ignore_tmp_files: + # Ignoring temp files can be useful when we want to check the + # correctness of a backup which aborted in the middle. In + # these cases it is OK to have tmp files lying around. + src_select.add_selection_func(src_select.regexp_get_sf( + ".*rdiff-backup.tmp.[^/]+$", 0)) + dest_select.add_selection_func(dest_select.regexp_get_sf( + ".*rdiff-backup.tmp.[^/]+$", 0)) + if exclude_rbdir: src_select.parse_rbdir_exclude() dest_select.parse_rbdir_exclude() @@ -186,14 +198,14 @@ def CompareRecursive(src_rp, dest_rp, compare_hardlinks = 1, # include rdiff-backup-data/increments src_select.add_selection_func(src_select.glob_get_tuple_sf( ('rdiff-backup-data', 'increments'), 1)) - dest_select.add_selection_func(src_select.glob_get_tuple_sf( + dest_select.add_selection_func(dest_select.glob_get_tuple_sf( ('rdiff-backup-data', 'increments'), 1)) # but exclude rdiff-backup-data src_select.add_selection_func(src_select.glob_get_tuple_sf( ('rdiff-backup-data',), 0)) - dest_select.add_selection_func(src_select.glob_get_tuple_sf( - ('rdiff-backup-data',), 0)) + dest_select.add_selection_func(dest_select.glob_get_tuple_sf( + ('rdiff-backup-data',), 0)) src_select.set_iter() dest_select.set_iter() @@ -221,20 +233,23 @@ def CompareRecursive(src_rp, dest_rp, compare_hardlinks = 1, if dest_rorp.index[-1].endswith('gz'): return 1 # Don't compare .missing increments because they don't matter if dest_rorp.index[-1].endswith('.missing'): return 1 - if src_rorp != dest_rorp: return None - if Hardlink.rorp_eq(src_rorp, dest_rorp): return 1 + if compare_hardlinks: + if Hardlink.rorp_eq(src_rorp, dest_rorp): return 1 + elif src_rorp == dest_rorp: return 1 Log("%s: %s" % (src_rorp.index, Hardlink.get_indicies(src_rorp, 1)), 3) Log("%s: %s" % (dest_rorp.index, Hardlink.get_indicies(dest_rorp, None)), 3) return None - if compare_hardlinks: + if equality_func: result = Iter.equal(dsiter1, dsiter2, 1, equality_func) + elif compare_hardlinks: dsiter1 = Hardlink.add_rorp_iter(dsiter1, 1) - dsiter2 = Hardlink.add_rorp_iter(dsiter2, None) + dsiter2 = Hardlink.add_rorp_iter(dsiter2, None) if exclude_rbdir: result = Iter.equal(dsiter1, dsiter2, 1, hardlink_equal) else: result = Iter.equal(dsiter1, dsiter2, 1, rbdir_equal) - elif equality_func: result = Iter.equal(dsiter1, dsiter2, 1, equality_func) + elif not exclude_rbdir: + result = Iter.equal(dsiter1, dsiter2, 1, rbdir_equal) else: result = Iter.equal(dsiter1, dsiter2, 1) for i in dsiter1: pass # make sure all files processed anyway |