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.