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__':
>

Reply via email to