The attached patch adds a new test, currently marked as XFail, for an
issue I recently discovered and posted about over on the users list
("Root-relative svn:externals result in error exporting a specific
revision"). In a nutshell, if you are exporting from a working copy with
the -r option, and the revision you are exporting has one or more
svn:externals with ^/ syntax, svn will exit with an assertion failure
while it is exporting the externals.
The log message is at the top of the patch.
Doug
Add test for exporting a specific revision with root-relative externals.
Exporting a specific revision from a working copy with root-relative externals
currently results in an assertion failure. This adds a test for that case.
* subversion/tests/cmdline/export_tests.py
(export_revision_with_root_relative_external): Add new test.
(test_list): Register the new test.
Index: subversion/tests/cmdline/export_tests.py
===================================================================
--- subversion/tests/cmdline/export_tests.py (revision 1802077)
+++ subversion/tests/cmdline/export_tests.py (working copy)
@@ -1070,7 +1070,39 @@ def export_file_externals2(sbox):
expected_output,
expected_disk)
+@XFail()
+def export_revision_with_root_relative_external(sbox):
+ "export a revision with root-relative external"
+ sbox.build()
+ wc_dir = sbox.wc_dir
+
+ # Set 'svn:externals' property in 'A/C' to 'A/B/E/alpha'(file external),
+ C_path = os.path.join(wc_dir, 'A', 'C')
+ externals_prop = "^/A/B/E/alpha exfile_alpha"
+
+ tmp_f = sbox.get_tempname('prop')
+ svntest.main.file_append(tmp_f, externals_prop)
+ svntest.main.run_svn(None, 'ps', '-F', tmp_f, 'svn:externals', C_path)
+ svntest.main.run_svn(None,'ci', '-m', 'log msg', '--quiet', C_path)
+
+ # Update the working copy to receive file external
+ svntest.main.run_svn(None, 'up', wc_dir)
+
+ # Export revision 2 from URL
+ export_target = sbox.add_wc_path('export_url')
+ svntest.actions.run_and_verify_svn(None, [],
+ 'export', sbox.repo_url, export_target,
+ '-r', 2)
+
+ # Export revision 2 from WC
+ # Fails (canonicalize: Assertion `*src != '/'' failed)
+ export_target = sbox.add_wc_path('export_wc')
+ svntest.actions.run_and_verify_svn(None, [],
+ 'export', sbox.wc_dir, export_target,
+ '-r', 2)
+
+
########################################################################
# Run the tests
@@ -1107,6 +1139,7 @@ test_list = [ None,
export_custom_keywords,
export_file_external,
export_file_externals2,
+ export_revision_with_root_relative_external,
]
if __name__ == '__main__':