=== modified file 'duplicity/file_naming.py' --- duplicity/file_naming.py 2014-01-30 18:47:15 +0000 +++ duplicity/file_naming.py 2014-01-30 19:34:47 +0000 @@ -38,7 +38,7 @@ new_sig_re = None new_sig_re_short = None -def prepare_regex(): +def prepare_regex(force = False): global full_vol_re global full_vol_re_short global full_manifest_re @@ -52,7 +52,8 @@ global new_sig_re global new_sig_re_short - if full_vol_re: + # we force regex re-generation in unit tests because file prefixes might have changed + if full_vol_re and not force: return full_vol_re = re.compile("^" + globals.file_prefix + globals.file_prefix_archive + "duplicity-full" @@ -218,35 +219,39 @@ assert not (volume_number and part_string) if type == "full-sig": if globals.short_filenames: - return (globals.file_prefix_signature + "dfs.%s.st%s%s" % + return (globals.file_prefix + globals.file_prefix_signature + "dfs.%s.st%s%s" % (to_base36(dup_time.curtime), part_string, suffix)) else: - return (globals.file_prefix_signature + "duplicity-full-signatures.%s.sigtar%s%s" % + return (globals.file_prefix + globals.file_prefix_signature + "duplicity-full-signatures.%s.sigtar%s%s" % (dup_time.curtimestr, part_string, suffix)) elif type == "new-sig": if globals.short_filenames: - return (globals.file_prefix_signature + "dns.%s.%s.st%s%s" % + return (globals.file_prefix + globals.file_prefix_signature + "dns.%s.%s.st%s%s" % (to_base36(dup_time.prevtime), to_base36(dup_time.curtime), part_string, suffix)) else: - return (globals.file_prefix_signature + "duplicity-new-signatures.%s.to.%s.sigtar%s%s" % + return (globals.file_prefix + globals.file_prefix_signature + "duplicity-new-signatures.%s.to.%s.sigtar%s%s" % (dup_time.prevtimestr, dup_time.curtimestr, part_string, suffix)) else: assert volume_number or manifest assert not (volume_number and manifest) + + prefix = globals.file_prefix + if volume_number: if globals.short_filenames: vol_string = "%s.dt" % to_base36(volume_number) else: vol_string = "vol%d.difftar" % volume_number - prefix = globals.file_prefix_archive + prefix += globals.file_prefix_archive else: if globals.short_filenames: vol_string = "m" else: vol_string = "manifest" - prefix = globals.file_prefix_manifest + prefix += globals.file_prefix_manifest + if type == "full": if globals.short_filenames: return ("%sdf.%s.%s%s%s" % (prefix, to_base36(dup_time.curtime), === modified file 'duplicity/globals.py' --- duplicity/globals.py 2014-01-30 18:47:15 +0000 +++ duplicity/globals.py 2014-01-30 18:49:14 +0000 @@ -28,7 +28,7 @@ # The current version of duplicity version = "$version" -# Default file_prefix value +# Prefix for all files (appended before type-specific prefixes) file_prefix = "" # Prefix for manifest files only === modified file 'testing/tests/file_namingtest.py' --- testing/tests/file_namingtest.py 2013-12-27 06:39:00 +0000 +++ testing/tests/file_namingtest.py 2014-01-30 19:38:26 +0000 @@ -45,6 +45,7 @@ dup_time.setprevtime(10) dup_time.setcurtime(20) + file_naming.prepare_regex(force = True) filename = file_naming.get("inc", volume_number = 23) log.Info(u"Inc filename: " + filename) pr = file_naming.parse(filename) @@ -70,6 +71,7 @@ def test_suffix(self): """Test suffix (encrypt/compressed) encoding and generation""" + file_naming.prepare_regex(force = True) filename = file_naming.get("inc", manifest = 1, gzipped = 1) pr = file_naming.parse(filename) assert pr and pr.compressed == 1 @@ -82,38 +84,40 @@ def test_more(self): """More file_parsing tests""" - pr = file_naming.parse("dns.h112bi.h14rg0.st.g") + file_naming.prepare_regex(force = True) + pr = file_naming.parse(globals.file_prefix + globals.file_prefix_signature + "dns.h112bi.h14rg0.st.g") assert pr, pr assert pr.type == "new-sig" assert pr.end_time == 1029826800L if not globals.short_filenames: - pr = file_naming.parse("duplicity-new-signatures.2002-08-18T00:04:30-07:00.to.2002-08-20T00:00:00-07:00.sigtar.gpg") + pr = file_naming.parse(globals.file_prefix + globals.file_prefix_signature + "duplicity-new-signatures.2002-08-18T00:04:30-07:00.to.2002-08-20T00:00:00-07:00.sigtar.gpg") assert pr, pr assert pr.type == "new-sig" assert pr.end_time == 1029826800L - pr = file_naming.parse("dfs.h5dixs.st.g") + pr = file_naming.parse(globals.file_prefix + globals.file_prefix_signature + "dfs.h5dixs.st.g") assert pr, pr assert pr.type == "full-sig" assert pr.time == 1036954144, repr(pr.time) def test_partial(self): """Test addition of partial flag""" - pr = file_naming.parse("dns.h112bi.h14rg0.st.p.g") + file_naming.prepare_regex(force = True) + pr = file_naming.parse(globals.file_prefix + globals.file_prefix_signature + "dns.h112bi.h14rg0.st.p.g") assert pr, pr assert pr.partial assert pr.type == "new-sig" assert pr.end_time == 1029826800L if not globals.short_filenames: - pr = file_naming.parse("duplicity-new-signatures.2002-08-18T00:04:30-07:00.to.2002-08-20T00:00:00-07:00.sigtar.part.gpg") + pr = file_naming.parse(globals.file_prefix + globals.file_prefix_signature + "duplicity-new-signatures.2002-08-18T00:04:30-07:00.to.2002-08-20T00:00:00-07:00.sigtar.part.gpg") assert pr, pr assert pr.partial assert pr.type == "new-sig" assert pr.end_time == 1029826800L - pr = file_naming.parse("dfs.h5dixs.st.p.g") + pr = file_naming.parse(globals.file_prefix + globals.file_prefix_signature + "dfs.h5dixs.st.p.g") assert pr, pr assert pr.partial assert pr.type == "full-sig" @@ -129,6 +133,14 @@ """Test short filename parsing and generation""" def setUp(self): globals.short_filenames = 1 + +class FileNamingPrefixes(unittest.TestCase, FileNamingBase): + """Test filename parsing and generation with prefixes""" + def setUp(self): + globals.file_prefix = "global-" + globals.file_prefix_manifest = "mani-" + globals.file_prefix_signature = "sign-" + globals.file_prefix_archive = "arch-" if __name__ == "__main__":