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)