You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by pb...@apache.org on 2011/04/20 19:50:58 UTC
svn commit: r1095468 -
/subversion/trunk/subversion/tests/cmdline/blame_tests.py
Author: pburba
Date: Wed Apr 20 17:50:57 2011
New Revision: 1095468
URL: http://svn.apache.org/viewvc?rev=1095468&view=rev
Log:
Add a test for issue #3862 'svn blame -g properly accounts for changes
from empty mergeinfo'.
* subversion/tests/cmdline/blame_tests.py
(merge_sensitive_blame_and_empty_mergeinfo): New
(test_list): Add merge_sensitive_blame_and_empty_mergeinfo.
Modified:
subversion/trunk/subversion/tests/cmdline/blame_tests.py
Modified: subversion/trunk/subversion/tests/cmdline/blame_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/blame_tests.py?rev=1095468&r1=1095467&r2=1095468&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/blame_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/blame_tests.py Wed Apr 20 17:50:57 2011
@@ -31,6 +31,9 @@ import os, sys, re
import svntest
from svntest.main import server_has_mergeinfo
+# For some basic merge setup used by blame -g tests.
+from merge_tests import set_up_branch
+
# (abbreviation)
Skip = svntest.testcase.Skip_deco
SkipUnless = svntest.testcase.SkipUnless_deco
@@ -734,6 +737,65 @@ def blame_output_after_merge(sbox):
svntest.actions.run_and_verify_svn(None, expected_output, [],
'blame', '-g', '-r', '6:head', mu_path)
+#----------------------------------------------------------------------
+
+@SkipUnless(server_has_mergeinfo)
+@XFail()
+@Issue(3862)
+def merge_sensitive_blame_and_empty_mergeinfo(sbox):
+ "blame -g handles changes from empty mergeinfo"
+
+ sbox.build()
+ wc_dir = sbox.wc_dir
+ wc_disk, wc_status = set_up_branch(sbox, True)
+
+ A_COPY_path = os.path.join(wc_dir, 'A_COPY')
+ psi_path = os.path.join(wc_dir, 'A', 'D', 'H', 'psi')
+ psi_COPY_path = os.path.join(wc_dir, 'A_COPY', 'D', 'H', 'psi')
+
+ # Make an edit to A/D/H/psi in r3.
+ svntest.main.file_append(psi_path, "trunk edit in revision three.\n")
+ svntest.main.run_svn(None, 'ci', '-m', 'trunk edit', wc_dir)
+
+ # Merge r3 from A to A_COPY, reverse merge r3 from A/D/H/psi
+ # to A_COPY/D/H/psi, and commit as r4. This results in empty
+ # mergeinfo on A_COPY/D/H/psi.
+ svntest.main.run_svn(None, 'up', wc_dir)
+ svntest.main.run_svn(None, 'merge', '-c3',
+ sbox.repo_url + '/A', A_COPY_path)
+ svntest.main.run_svn(None, 'merge', '-c-3',
+ sbox.repo_url + '/A/D/H/psi', psi_COPY_path)
+ svntest.main.run_svn(None, 'ci', '-m',
+ 'Sync merge A to A_COPY excepting A_COPY/D/H/psi',
+ wc_dir)
+
+ # Make an edit to A/D/H/psi in r5.
+ svntest.main.file_append(psi_path, "trunk edit in revision five.\n")
+ svntest.main.run_svn(None, 'ci', '-m', 'trunk edit', wc_dir)
+
+ # Sync merge A/D/H/psi to A_COPY/D/H/psi and commit as r6. This replaces
+ # the empty mergeinfo on A_COPY/D/H/psi with '/A/D/H/psi:2-5'.
+ svntest.main.run_svn(None, 'up', wc_dir)
+ svntest.main.run_svn(None, 'merge', sbox.repo_url + '/A/D/H/psi',
+ psi_COPY_path)
+ svntest.main.run_svn(None, 'ci', '-m',
+ 'Sync merge A/D/H/psi to A_COPY/D/H/psi', wc_dir)
+
+ # Check the blame -g output:
+ # Currently this test fails because the trunk edit done in r3 is
+ # reported as having been done in r5.
+ #
+ # >svn blame -g A_COPY\D\H\psi
+ # 1 jrandom This is the file 'psi'.
+ # G 5 jrandom trunk edit in revision three.
+ # G 5 jrandom trunk edit in revision five.
+ expected_output = [
+ " 1 jrandom This is the file 'psi'.\n",
+ "G 3 jrandom trunk edit in revision three.\n",
+ "G 5 jrandom trunk edit in revision five.\n"]
+ svntest.actions.run_and_verify_svn(None, expected_output, [],
+ 'blame', '-g', psi_COPY_path)
+
########################################################################
# Run the tests
@@ -754,6 +816,7 @@ test_list = [ None,
blame_peg_rev_file_not_in_head,
blame_file_not_in_head,
blame_output_after_merge,
+ merge_sensitive_blame_and_empty_mergeinfo,
]
if __name__ == '__main__':