You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2013/02/22 19:16:33 UTC

svn commit: r1449156 - in /subversion/trunk/subversion/tests/cmdline: svntest/verify.py tree_conflict_tests.py

Author: julianfoad
Date: Fri Feb 22 18:16:33 2013
New Revision: 1449156

URL: http://svn.apache.org/r1449156
Log:
In the test suite, create and use an 'AlternateOutput' matcher class that
matches any of the given expected outputs.

* subversion/tests/cmdline/svntest/verify.py
  (AlternateOutput): New class.

* subversion/tests/cmdline/tree_conflict_tests.py
  (ensure_tree_conflict): Use it to strengthen the checks.

Modified:
    subversion/trunk/subversion/tests/cmdline/svntest/verify.py
    subversion/trunk/subversion/tests/cmdline/tree_conflict_tests.py

Modified: subversion/trunk/subversion/tests/cmdline/svntest/verify.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/svntest/verify.py?rev=1449156&r1=1449155&r2=1449156&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/svntest/verify.py (original)
+++ subversion/trunk/subversion/tests/cmdline/svntest/verify.py Fri Feb 22 18:16:33 2013
@@ -315,6 +315,29 @@ class UnorderedRegexListOutput(ExpectedO
                   label + ' (regexp) (unordered)', label)
 
 
+class AlternateOutput(ExpectedOutput):
+  """Matches any one of a list of ExpectedOutput instances.
+  """
+
+  def __init__(self, expected, match_all=True):
+    "EXPECTED is a list of ExpectedOutput instances."
+    assert isinstance(expected, list) and expected != []
+    assert all(isinstance(e, ExpectedOutput) for e in expected)
+    ExpectedOutput.__init__(self, expected)
+
+  def matches(self, actual):
+    assert actual is not None
+    for e in self.expected:
+      if e.matches(actual):
+        return True
+    return False
+
+  def display_differences(self, message, label, actual):
+    # For now, just display differences against the first alternative.
+    e = self.expected[0]
+    e.display_differences(message, label, actual)
+
+
 ######################################################################
 # Displaying expected and actual output
 

Modified: subversion/trunk/subversion/tests/cmdline/tree_conflict_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/tree_conflict_tests.py?rev=1449156&r1=1449155&r2=1449156&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/tree_conflict_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/tree_conflict_tests.py Fri Feb 22 18:16:33 2013
@@ -49,6 +49,10 @@ Issue = svntest.testcase.Issue_deco
 Wimp = svntest.testcase.Wimp_deco
 Item = svntest.wc.StateItem
 AnyOutput = svntest.verify.AnyOutput
+RegexOutput = svntest.verify.RegexOutput
+RegexListOutput = svntest.verify.RegexListOutput
+UnorderedOutput = svntest.verify.UnorderedOutput
+AlternateOutput = svntest.verify.AlternateOutput
 
 logger = logging.getLogger()
 
@@ -495,9 +499,17 @@ def ensure_tree_conflict(sbox, operation
       run_and_verify_commit(".", None, None, ".*conflict.*", victim_path)
 
       logger.debug("--- Checking that 'status' reports the conflict")
-      expected_stdout = svntest.verify.RegexOutput("^......C.* " +
-                                                   re.escape(victim_path) + "$",
-                                                   match_all=False)
+      expected_stdout = AlternateOutput([
+                          RegexListOutput([
+                          "^......C.* " + re.escape(victim_path) + "$",
+                          "^      >   .* upon " + operation] +
+                          svntest.main.summary_of_conflicts(tree_conflicts=1)),
+                          RegexListOutput([
+                          "^......C.* " + re.escape(victim_path) + "$",
+                          "^        > moved to .*",
+                          "^      >   .* upon " + operation] +
+                          svntest.main.summary_of_conflicts(tree_conflicts=1))
+                          ])
       run_and_verify_svn(None, expected_stdout, [],
                          'status', victim_path)