[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Probable bug with svn copy

From: Paul Burba <ptburba_at_gmail.com>
Date: Mon, 25 Jan 2010 10:53:01 -0500

On Mon, Jan 25, 2010 at 2:17 AM, Noorul Islam K M <noorul_at_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 <noorul_at_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__':
>
Received on 2010-01-25 16:53:36 CET

This is an archived mail posted to the Subversion Users mailing list.