Add a test for issue "invalid xml file produced by: svn log --xml
verbose --use-merge-history --search".
* subversion/tests/cmdline/log_tests.py
(log_with_merge_history_and_search): New test.
(test_list): Run it.
@@ -2779,6 +2779,42 @@ def log_on_deleted_deep(sbox):
'',
'-q', '-c', '1-2')
+@XFail()
+@Issue(4711)
+def log_with_merge_history_and_search(sbox):
+ "log --use-merge-history --search"
+
+ sbox.build()
+
+ # r2: create branch
+ sbox.simple_repo_copy('A', 'A2') # r2
+
+ # r3: mod in trunk
+ sbox.simple_append('A/mu', 'line 2')
+ sbox.simple_commit(message='r3: mod')
+ sbox.simple_update()
+
+ # r4: merge
+ svntest.main.run_svn(None, 'merge', sbox.repo_url + '/A', sbox.ospath('A2'))
+ sbox.simple_commit(message='r4: merge')
+ sbox.simple_update()
+
+ # Helper function
+ def count(haystack, needle):
+ """Return the number of times the string NEEDLE occurs in the string
+ HAYSTACK."""
+ return len(haystack.split(needle)) - 1
+
+ # Check the output is valid
+ # ### Since the test is currently XFail, we only smoke test the output.
+ # ### When fixing this test to PASS, extend this validation.
+ _, output, _ = svntest.main.run_svn(None, 'log', '--xml', '-g',
+ '--search', "this will have no matches",
+ sbox.ospath('A2'))
+
+ output = '\n'.join(output)
+ if count(output, "<logentry") != count(output, "</logentry"):
+ raise svntest.Failure("Apparently invalid XML in " + repr(output))
########################################################################
# Run the tests
@@ -2830,6 +2866,7 @@ test_list = [ None,
merge_sensitive_log_xml_reverse_merges,
log_revision_move_copy,
log_on_deleted_deep,
+ log_with_merge_history_and_search,
]
if __name__ == '__main__':
