On Mon, Jan 25, 2010 at 2:17 AM, Noorul Islam K M <noo...@collab.net> wrote: > > Julian, > > Please find attached test case patch for this scenario in trunk. > > [[[ > Log: > > New XFail test case for reverse merge move scenario. Rename fails after > reverting a commit using reverse merge. This issue need to be fixed for > the test case to pass. > > * subversion/tests/cmdline/copy_tests.py > (reverse_merge_move): New function. > (test_list): Added test. > > Found by: alan.spencer > Suggested by: julianfoad > Patch by: Noorul Islam K M <noo...@collab.net> > ]]] > > > Thanks and Regards > Noorul
> Index: copy_tests.py > =================================================================== > --- copy_tests.py (revision 902715) > +++ copy_tests.py (working copy) > @@ -4266,6 +4266,44 @@ > None, sbox.wc_dir) > > > +def reverse_merge_move(sbox): > + """reverse merge move""" > + > + # Alias for svntest.actions.run_and_verify_svn > + rav_svn = svntest.actions.run_and_verify_svn > + > + wc_dir = sbox.wc_dir > + a_dir = os.path.join(wc_dir, 'A') > + a_repo_url = sbox.repo_url+ '/A' > + sbox.build() > + > + # Update working directory and ensure that we are at revision 1. > + rav_svn(None, ["At revision 1.\n"], [], 'up', wc_dir) > + > + # Add new folder and file, later commit > + new_path = os.path.join(a_dir, 'New') > + os.mkdir(new_path) > + first_path = os.path.join(new_path, 'first') > + svntest.main.file_append(first_path, 'appended first text') > + svntest.main.run_svn(None, "add", new_path) > + rav_svn(None, None, [], 'ci', wc_dir, '-m', 'Add new folder %s' % new_path) > + rav_svn(None, ["At revision 2.\n"], [], 'up', wc_dir) > + > + # Reverse merge to revert previous changes and commit > + rav_svn(None, None, [], 'merge', '-c', '-2', a_repo_url, a_dir) > + rav_svn(None, None, [], 'ci', '-m', 'Reverting svn merge -c -2.', a_dir) > + rav_svn(None, ["At revision 3.\n"], [], 'up', wc_dir) > + > + # Reverse merge again to undo last revert. > + rav_svn(None, None, [], 'merge', '-c', '-3', a_repo_url, a_dir) > + > + # Move new added file to another one and commit. > + second_path = os.path.join(new_path, 'second') > + rav_svn(None, None, [], 'move', first_path, second_path) > + rav_svn(None, None, ["Committed revision 4.\n"], 'ci', '-m', ^^^^^^^^^^^^^^^^^^^^^^^^^ The expected_stderr is "", not "Committed revision 4.\n". The expected_stdout is something like: [[[ Adding svn-test-work\working_copies\copy_tests-77\A\New Adding svn-test-work\working_copies\copy_tests-77\A\New\second Committed revision 4. ]]] So you can either pass None as expected_stdout (in which case it isn't checked at all), pass a single string regex describing the above output, or use svntest.actions.run_and_verify_commit(). Also, would you mind taking a stab at expanding the test to cover Alan's original problem? Specifically that a second working copy, when updated, gets both the move destination *and* the source added. Paul > + 'Revert svn merge. svn mv %s %s.' % (first_path, second_path), > a_dir) > + > + > ######################################################################## > # Run the tests > > @@ -4352,7 +4390,8 @@ > path_copy_in_repo_2475, > commit_copy_depth_empty, > copy_below_copy, > - XFail(move_below_move) > + XFail(move_below_move), > + XFail(reverse_merge_move) > ] > > if __name__ == '__main__': >