You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2013/12/03 18:17:24 UTC
svn commit: r1547484 - in /subversion/trunk/subversion/tests/cmdline:
svnadmin_tests.py svntest/main.py svntest/verify.py
Author: stefan2
Date: Tue Dec 3 17:17:23 2013
New Revision: 1547484
URL: http://svn.apache.org/r1547484
Log:
Make svnadmin-tests pass for 1.5 to 1.9 compat runs.
* subversion/tests/cmdline/svntest/main.py
(fs_has_rep_sharing,
fs_has_pack): New feature presence checks that we can use
e.g. for @SkipUnless conditions.
* subversion/tests/cmdline/svntest/verify.py
(RegexOutput.insert,
RegexListOutput.insert): Add these methods that allow us to e.g.
prepend lines to svadmin verify outputs
depending on metadata checks being done.
(RegexListOutput.__init__): Allow us to start with an empty list.
* subversion/tests/cmdline/svnadmin_tests.py
(verify_windows_paths_in_repos): Use the new feature checks instead
of local logic.
(load_ranges): Filter sha1 checksums from the expected dump files
when we use pre-1.5 repositories.
(hotcopy_incremental_packed): Skip this when the repo doesn't support
packing.
(verify_keep_going,
verify_invalid_path_changes,
verify_denormalized_names): Insert "verifying metadata" patterns
into expected output depending on repo
capabilities.
Modified:
subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py
subversion/trunk/subversion/tests/cmdline/svntest/main.py
subversion/trunk/subversion/tests/cmdline/svntest/verify.py
Modified: subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py?rev=1547484&r1=1547483&r2=1547484&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py Tue Dec 3 17:17:23 2013
@@ -640,9 +640,7 @@ def verify_windows_paths_in_repos(sbox):
# unfortunately, some backends needs to do more checks than other
# resulting in different progress output
- if svntest.main.is_fs_type_fsx() or \
- (svntest.main.is_fs_type_fsfs() and \
- svntest.main.options.server_minor_version >= 9):
+ if svntest.main.is_fs_log_addressing():
svntest.verify.compare_and_display_lines(
"Error while running 'svnadmin verify'.",
'STDERR', ["* Verifying metadata at revision 0 ...\n",
@@ -650,7 +648,7 @@ def verify_windows_paths_in_repos(sbox):
"* Verified revision 0.\n",
"* Verified revision 1.\n",
"* Verified revision 2.\n"], output)
- elif svntest.main.is_fs_type_fsfs():
+ elif svntest.main.fs_has_rep_sharing():
svntest.verify.compare_and_display_lines(
"Error while running 'svnadmin verify'.",
'STDERR', ["* Verifying repository metadata ...\n",
@@ -1688,7 +1686,17 @@ def load_ranges(sbox):
None, 'youngest', sbox.repo_dir)
# There are ordering differences in the property blocks.
- expected_dump = UnorderedOutput(dumplines)
+ if (svntest.main.options.server_minor_version < 6):
+ temp = []
+
+ for line in dumplines:
+ if not "Text-content-sha1:" in line:
+ temp.append(line)
+
+ expected_dump = UnorderedOutput(temp)
+ else:
+ expected_dump = UnorderedOutput(dumplines)
+
new_dumpdata = svntest.actions.run_and_verify_dump(sbox.repo_dir)
svntest.verify.compare_and_display_lines("Dump files", "DUMP",
expected_dump, new_dumpdata)
@@ -1717,6 +1725,7 @@ def hotcopy_incremental(sbox):
sbox.simple_commit()
@SkipUnless(svntest.main.is_fs_type_fsfs)
+@SkipUnless(svntest.main.fs_has_pack)
def hotcopy_incremental_packed(sbox):
"'svnadmin hotcopy --incremental' with packing"
sbox.build()
@@ -1965,15 +1974,13 @@ def verify_keep_going(sbox):
sbox.repo_dir)
if svntest.main.is_fs_log_addressing():
- exp_out = svntest.verify.RegexListOutput([".*Verifying metadata at revision 0",
- ".*Verified revision 0.",
+ exp_out = svntest.verify.RegexListOutput([".*Verified revision 0.",
".*Verified revision 1.",
".*Verified revision 2.",
".*Verified revision 3."])
exp_err = svntest.verify.RegexListOutput(["svnadmin: E165011:.*"], False)
else:
- exp_out = svntest.verify.RegexListOutput([".*Verifying repository metadata",
- ".*Verified revision 0.",
+ exp_out = svntest.verify.RegexListOutput([".*Verified revision 0.",
".*Verified revision 1.",
".*Error verifying revision 2.",
".*Error verifying revision 3.",
@@ -1985,6 +1992,9 @@ def verify_keep_going(sbox):
exp_err = svntest.verify.RegexListOutput(["svnadmin: E160004:.*",
"svnadmin: E165011:.*"], False)
+ if (svntest.main.fs_has_rep_sharing()):
+ exp_out.insert(0, ".*Verifying.*metadata.*")
+
if svntest.verify.verify_outputs("Unexpected error while running 'svnadmin verify'.",
output, errput, exp_out, exp_err):
raise svntest.Failure
@@ -1992,13 +2002,14 @@ def verify_keep_going(sbox):
exit_code, output, errput = svntest.main.run_svnadmin("verify",
sbox.repo_dir)
- if (svntest.main.options.server_minor_version < 9):
- exp_out = svntest.verify.RegexListOutput([".*Verifying repository metadata",
- ".*Verified revision 0.",
+ if (svntest.main.is_fs_log_addressing()):
+ exp_out = svntest.verify.RegexListOutput([".*Verifying metadata at revision 0"])
+ else:
+ exp_out = svntest.verify.RegexListOutput([".*Verified revision 0.",
".*Verified revision 1.",
".*Error verifying revision 2."])
- else:
- exp_out = svntest.verify.RegexListOutput([".*Verifying metadata at revision 0"])
+ if (svntest.main.fs_has_rep_sharing()):
+ exp_out.insert(0, ".*Verifying repository metadata.*")
if svntest.verify.verify_outputs("Unexpected error while running 'svnadmin verify'.",
output, errput, exp_out, exp_err):
@@ -2075,13 +2086,7 @@ def verify_invalid_path_changes(sbox):
"--keep-going",
sbox.repo_dir)
- if repo_format(sbox) < 7:
- first_line = ".*Verifying repository metadata"
- else:
- first_line = ".*Verifying metadata at revision 0"
-
- exp_out = svntest.verify.RegexListOutput([first_line,
- ".*Verified revision 0.",
+ exp_out = svntest.verify.RegexListOutput([".*Verified revision 0.",
".*Verified revision 1.",
".*Error verifying revision 2.",
".*Verified revision 3.",
@@ -2118,6 +2123,8 @@ def verify_invalid_path_changes(sbox):
".*r16: E145001:.*",
".*r18: E160013:.*",
".*r18: E160013:.*"])
+ if (svntest.main.fs_has_rep_sharing()):
+ exp_out.insert(0, ".*Verifying.*metadata.*")
exp_err = svntest.verify.RegexListOutput(["svnadmin: E160020:.*",
"svnadmin: E145001:.*",
@@ -2132,17 +2139,18 @@ def verify_invalid_path_changes(sbox):
sbox.repo_dir)
if svntest.main.is_fs_log_addressing():
- exp_out = svntest.verify.RegexListOutput([first_line])
+ exp_out = svntest.verify.RegexListOutput([])
exp_err = svntest.verify.RegexListOutput(["svnadmin: E160058:.*",
"svnadmin: E165011:.*"], False)
else:
- exp_out = svntest.verify.RegexListOutput([".*Verifying repository metadata",
- ".*Verified revision 0.",
+ exp_out = svntest.verify.RegexListOutput([".*Verified revision 0.",
".*Verified revision 1.",
".*Error verifying revision 2."])
exp_err = svntest.verify.RegexListOutput(["svnadmin: E160020:.*",
"svnadmin: E165011:.*"], False)
+ if (svntest.main.fs_has_rep_sharing()):
+ exp_out.insert(0, ".*Verifying.*metadata.*")
if svntest.verify.verify_outputs("Unexpected error while running 'svnadmin verify'.",
output, errput, exp_out, exp_err):
raise svntest.Failure
@@ -2198,11 +2206,11 @@ def verify_denormalized_names(sbox):
".*Verified revision 7."]
# The BDB backend doesn't do global metadata verification.
- if not svntest.main.is_fs_type_bdb():
- expected_output_regex_list.insert(0, ".*Verifying repository metadata")
+ if (svntest.main.fs_has_rep_sharing()):
+ expected_output_regex_list.insert(0, ".*Verifying repository metadata.*")
- if svntest.main.is_fs_log_addressing():
- expected_output_regex_list.insert(0, ".* Verifying metadata at revision 0 ...")
+ if svntest.main.is_fs_log_addressing():
+ expected_output_regex_list.insert(0, ".* Verifying metadata at revision 0.*")
exp_out = svntest.verify.RegexListOutput(expected_output_regex_list)
exp_err = svntest.verify.ExpectedOutput([])
Modified: subversion/trunk/subversion/tests/cmdline/svntest/main.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/svntest/main.py?rev=1547484&r1=1547483&r2=1547484&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/svntest/main.py (original)
+++ subversion/trunk/subversion/tests/cmdline/svntest/main.py Tue Dec 3 17:17:23 2013
@@ -1340,6 +1340,14 @@ def is_fs_log_addressing():
return is_fs_type_fsx() or \
(is_fs_type_fsfs() and options.server_minor_version >= 9)
+def fs_has_rep_sharing():
+ return is_fs_type_fsx() or \
+ (is_fs_type_fsfs() and options.server_minor_version >= 6)
+
+def fs_has_pack():
+ return is_fs_type_fsx() or \
+ (is_fs_type_fsfs() and options.server_minor_version >= 6)
+
def is_os_windows():
return os.name == 'nt'
Modified: subversion/trunk/subversion/tests/cmdline/svntest/verify.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/svntest/verify.py?rev=1547484&r1=1547483&r2=1547484&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/svntest/verify.py (original)
+++ subversion/trunk/subversion/tests/cmdline/svntest/verify.py Tue Dec 3 17:17:23 2013
@@ -212,6 +212,9 @@ class RegexOutput(ExpectedOutput):
def display_differences(self, message, label, actual):
display_lines(message, self.expected, actual, label + ' (regexp)', label)
+ def insert(self, index, line):
+ self.expected.insert(index, line)
+ self.expected_re = re.compile(self.expected)
class RegexListOutput(ExpectedOutput):
"""Matches an ordered list of regular expressions.
@@ -227,7 +230,7 @@ class RegexListOutput(ExpectedOutput):
def __init__(self, expected, match_all=True):
"EXPECTED is a list of regular expression strings."
- assert isinstance(expected, list) and expected != []
+ assert isinstance(expected, list)
ExpectedOutput.__init__(self, expected, match_all)
self.expected_res = [re.compile(e) for e in expected]
@@ -251,6 +254,10 @@ class RegexListOutput(ExpectedOutput):
def display_differences(self, message, label, actual):
display_lines(message, self.expected, actual, label + ' (regexp)', label)
+ def insert(self, index, line):
+ self.expected.insert(index, line)
+ self.expected_res = [re.compile(e) for e in self.expected]
+
class UnorderedOutput(ExpectedOutput):
"""Matches an unordered list of lines.