Author: pburba
Date: Thu Apr 22 16:35:44 2010
New Revision: 936945

URL: http://svn.apache.org/viewvc?rev=936945&view=rev
Log:
Adjust an issue #3020 test to demonstrate faulty mergeinfo rev mapping
during incremental loads.

* subversion/tests/cmdline/svnadmin_tests.py

  (dont_drop_valid_mergeinfo_during_incremental_loads): Expand test to
   cover use case described here
   http://subversion.tigris.org/issues/show_bug.cgi?id=3020#desc16

  (test_list): Set dont_drop_valid_mergeinfo_during_incremental_loads as
   XFail.

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

Modified: subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py?rev=936945&r1=936944&r2=936945&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py Thu Apr 22 
16:35:44 2010
@@ -1202,6 +1202,85 @@ def dont_drop_valid_mergeinfo_during_inc
                                      'propget', 'svn:mergeinfo', '-R',
                                      sbox.repo_url)
 
+  # Load the skeleton dump:
+  dumpfile1 = open(os.path.join(os.path.dirname(sys.argv[0]),
+                                'svnadmin_tests_data',
+                                'skeleton_repos.dump')).read()
+
+  # Now test that the load of an incremental dump into a non-empty
+  # repository correctly adjusts the incoming mergeinfo by the expected
+  # offset, particularly in the case where the first revision in the
+  # load stream has mergeinfo.
+  #
+  # Once again, remove the current repos and create an empty one in
+  # its place.
+  test_create(sbox)
+  # Load this skeleton repos into the empty target:
+  #
+  #   Projects/       (Added r1)
+  #     README        (Added r2)
+  #     Project-X     (Added r3)
+  #     Project-Y     (Added r4)
+  #     Project-Z     (Added r5)
+  #     docs/         (Added r6)
+  #       README      (Added r6)
+  dumpfile1 = open(os.path.join(os.path.dirname(sys.argv[0]),
+                                'svnadmin_tests_data',
+                                'skeleton_repos.dump')).read()
+  load_and_verify_dumpstream(sbox, [], [], None, dumpfile1, '--ignore-uuid')
+
+  # Once again load the three incremental dump files in sequence, but this
+  # time into the /Projects/Project-X directory of the target repos.
+  load_and_verify_dumpstream(sbox, [], [], None,
+                             open(dump_file_r1_10).read(),
+                             '--parent-dir', 'Projects/Project-X',
+                             '--ignore-uuid')
+  load_and_verify_dumpstream(sbox, [], [], None,
+                             open(dump_file_r11_13).read(),
+                             '--parent-dir', 'Projects/Project-X',
+                             '--ignore-uuid')
+  load_and_verify_dumpstream(sbox, [], [], None,
+                             open(dump_file_r14_15).read(),
+                             '--parent-dir', 'Projects/Project-X',
+                             '--ignore-uuid')
+
+  # Check that the mergeinfo is as expected.  This is exactly the
+  # same expected mergeinfo we previously checked, except that the
+  # revisions are all offset +6 to reflect the revions already in
+  # the skeleton target before we began loading.
+  #
+  # Currently this fails because our current logic mapping mergeinfo revs
+  # in the load stream to their new values based on the offset of the
+  # target repository is quite flawed.  Right now this is the resulting
+  # mergeinfo:
+  #
+  #    Properties on 'svnadmin_tests-21\Projects\Project-X\branches\B1\B
+  #      svn:mergeinfo
+  #        /Projects/Project-X/branches/B2/B/E:11-12
+  #        /Projects/Project-X/trunk/B/E:5-6,8-9
+  #    Properties on 'svnadmin_tests-21\Projects\Project-X\branches\B1':
+  #      svn:mergeinfo
+  #        /Projects/Project-X/branches/B2:11-18
+  #                                           ^^
+  #                                 The *only* correct rev here!
+  #        /Projects/Project-X/trunk:6,9
+  #    Properties on 'svnadmin_tests-21\Projects\Project-X\branches\B2':
+  #      svn:mergeinfo
+  #        /Projects/Project-X/trunk:9
+  #
+  # See http://subversion.tigris.org/issues/show_bug.cgi?id=3020#desc16 for
+  # more info.
+  url = sbox.repo_url + '/branches/'
+  expected_output = svntest.verify.UnorderedOutput([
+    url + "B1 - /branches/B2:17-18\n",
+    "/trunk:12,15\n",
+    url + "B2 - /trunk:15\n",
+    url + "B1/B/E - /branches/B2/B/E:17-18\n",
+    "/trunk/B/E:11-12,14-15\n"])
+  svntest.actions.run_and_verify_svn(None, expected_output, [],
+                                     'propget', 'svn:mergeinfo', '-R',
+                                     sbox.repo_url)
+
 ########################################################################
 # Run the tests
 
@@ -1230,7 +1309,7 @@ test_list = [ None,
               SkipUnless(verify_with_invalid_revprops,
                          svntest.main.is_fs_type_fsfs),
               XFail(drop_mergeinfo_outside_of_dump_stream),
-              dont_drop_valid_mergeinfo_during_incremental_loads,
+              XFail(dont_drop_valid_mergeinfo_during_incremental_loads),
              ]
 
 if __name__ == '__main__':


Reply via email to