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 2016/10/26 16:35:03 UTC

svn commit: r1766699 - /subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py

Author: stsp
Date: Wed Oct 26 16:35:03 2016
New Revision: 1766699

URL: http://svn.apache.org/viewvc?rev=1766699&view=rev
Log:
Add a regression test which shows that reintegrate merges have a problem
if the merge target branch was renamed: It tries to access the new
(post-move) path at a revision where it didn't exist yet.

* subversion/tests/cmdline/merge_reintegrate_tests.py
  (reintegrate_unsynced_into_renamed_branch, test_list): New test.

Modified:
    subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py

Modified: subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py?rev=1766699&r1=1766698&r2=1766699&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py Wed Oct 26 16:35:03 2016
@@ -2823,6 +2823,47 @@ def renamed_branch_reintegrate(sbox):
   # ### TODO: Check the result more carefully than merely that it completed.
   run_reintegrate(sbox.repo_url + '/RENAMED@8', A_path)
 
+@SkipUnless(server_has_mergeinfo)
+@XFail()
+def reintegrate_unsynced_into_renamed_branch(sbox):
+  """reintegrate unsynced branch into renamed branch"""
+
+  # The idea of this test is to ensure that the reintegrate merge is able to
+  # cope when one or both of the branches have been renamed.
+  # This test checks whether the reintegrate merge behaves correctly
+  # when checking for unsync revision ranges in the reintegrate source.
+  # The reintegrate merge should error out because of unsynced ranges.
+  # At the time this test was written, it failed with 'path not found'.
+
+  # Make A_COPY branch in r2, and do a few more commits to A in r3-6.
+  sbox.build()
+
+  wc_dir = sbox.wc_dir
+  A_path = sbox.ospath('A')
+  A_COPY_path = sbox.ospath('A_COPY')
+  expected_disk, expected_status = set_up_branch(sbox)
+
+  # Cherry-pick merge from trunk to branch
+  youngest_rev = sbox.youngest()
+  svntest.main.run_svn(None, 'merge', '-c', youngest_rev,
+                       sbox.repo_url + '/A', A_COPY_path)
+  sbox.simple_commit()
+  sbox.simple_update()
+
+  # Rename the trunk
+  sbox.simple_move('A', 'A_RENAMED')
+  sbox.simple_commit()
+  sbox.simple_update()
+
+  # Try to reintegrate the branch. This should fail with an
+  # 'unsynced ranges' error. But it fails instead with:
+  # svn: E160013: File not found: revision 5, path '/A_RENAMED'
+  run_reintegrate_expect_error(sbox.repo_url + '/A_COPY',
+                               sbox.ospath('A_RENAMED'),
+                               [],
+                               "svn: E195016: Reintegrate can only be used if.*")
+
+
 ########################################################################
 # Run the tests
 
@@ -2850,6 +2891,7 @@ test_list = [ None,
               reintegrate_symlink_deletion,
               no_op_reintegrate,
               renamed_branch_reintegrate,
+              reintegrate_unsynced_into_renamed_branch,
              ]
 
 if __name__ == '__main__':