Hi, Thanks to Stefan and Daniel, I now have a neat patch with a nice log message.
[[[ svnrdump: Add a regression test which verifies that revision 0 of a repository is dumped correctly. Revision 0 only has revision properties, so it's somewhat special. * subversion/tests/cmdline/svnrdump_tests_data: A new directory to keep test data for svnrdump. * subversion/tests/cmdline/svnrdump_tests_data/revision0.dump: A dump of revision zero of the ASF repository as of late July 2010. Used as test data in the revision0 test. * subversion/tests/cmdline/svnrdump_tests.py: (build_repos, run_test): The new helper functions. (revision0): The new test. (test_list): Run the new test. ]]] Index: subversion/tests/cmdline/svnrdump_tests.py =================================================================== --- subversion/tests/cmdline/svnrdump_tests.py (revision 978817) +++ subversion/tests/cmdline/svnrdump_tests.py (working copy) @@ -41,6 +41,54 @@ XFail = svntest.testcase.XFail Item = svntest.wc.StateItem Wimp = svntest.testcase.Wimp +###################################################################### +# Helper routines + +def build_repos(sbox): + """Build an empty sandbox repository""" + + # Cleanup after the last run by removing any left-over repository. + svntest.main.safe_rmtree(sbox.repo_dir) + + # Create an empty repository. + svntest.main.create_repos(sbox.repo_dir) + +def run_test(sbox, dumpfile_name): + """Load a dumpfile using svnadmin load, dump it with svnrdump and + check that the same dumpfile is produced""" + + # Create an empty sanbox repository + build_repos(sbox) + + # This directory contains all the dump files + svnsync_tests_dir = os.path.join(os.path.dirname(sys.argv[0]), + 'svnrdump_tests_data') + + # Load the specified dump file into the repository + svnadmin_dumpfile = open(os.path.join(svnsync_tests_dir, + dumpfile_name), + 'rb').readlines() + + # Create the revprop-change hook for this test + svntest.actions.enable_revprop_changes(sbox.repo_dir) + + # Load dumpfile_contents into the sbox repository + svntest.actions.run_and_verify_load(sbox.repo_dir, svnadmin_dumpfile) + + # Create a dump file using svnrdump + r, svnrdump_dumpfile, err = svntest.main.run_svnrdump(sbox.repo_url) + + # Check error code + if (r != 0): + raise svntest.Failure('Result code not 0') + + # Compare the output + svntest.verify.compare_and_display_lines( + "Dump files", "DUMP", svnadmin_dumpfile, svnrdump_dumpfile) + +###################################################################### +# Tests + def basic_svnrdump(sbox): "dump the standard sbox repos" sbox.build(read_only = True, create_wc = False) @@ -53,6 +101,10 @@ def basic_svnrdump(sbox): if not out[0].startswith('SVN-fs-dump-format-version:'): raise svntest.Failure('No valid output') +def revision0(sbox): + "dump revision zero" + run_test(sbox, dumpfile_name = "revision0.dump") + ######################################################################## # Run the tests @@ -60,6 +112,7 @@ def basic_svnrdump(sbox): # list all tests here, starting with None: test_list = [ None, basic_svnrdump, + revision0, ] if __name__ == '__main__': Index: subversion/tests/cmdline/svnrdump_tests_data/revision0.dump =================================================================== --- subversion/tests/cmdline/svnrdump_tests_data/revision0.dump (revision 0) +++ subversion/tests/cmdline/svnrdump_tests_data/revision0.dump (working copy) @@ -0,0 +1,30 @@ +SVN-fs-dump-format-version: 3 + +UUID: 95f5730d-843b-4fe3-8879-f46da52f2123 + +Revision-number: 0 +Prop-content-length: 258 +Content-length: 258 + +K 8 +svn:date +V 27 +2003-01-08T10:33:40.549533Z +K 26 +svn:sync-currently-copying +V 2 +15 +K 17 +svn:sync-from-url +V 31 +http://svn.apache.org/repos/asf +K 18 +svn:sync-from-uuid +V 36 +13f79535-47bb-0310-9956-ffa450edef68 +K 24 +svn:sync-last-merged-rev +V 2 +14 +PROPS-END +