summaryrefslogtreecommitdiff
path: root/rdiff-backup/testing/commontest.py
diff options
context:
space:
mode:
Diffstat (limited to 'rdiff-backup/testing/commontest.py')
-rw-r--r--rdiff-backup/testing/commontest.py33
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