Author: sbutler
Date: Tue Jun 7 00:21:42 2011
New Revision: 1132843
URL: http://svn.apache.org/viewvc?rev=1132843&view=rev
Log:
More testing for issue 3899 (auto resolve for wc-wc copies/moves).
* subversion/tests/cmdline/copy_tests.py
(copying_conflicts): Rename to...
(copy_and_move_conflicts): ...this and add XFAILing test cases for moves.
Modified:
subversion/trunk/subversion/tests/cmdline/copy_tests.py
Modified: subversion/trunk/subversion/tests/cmdline/copy_tests.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/copy_tests.py?rev=1132843&r1=1132842&r2=1132843&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/copy_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/copy_tests.py Tue Jun 7 00:21:42
2011
@@ -5221,12 +5221,13 @@ def case_only_rename(sbox):
# Test that the necessary deletes and adds are present in status.
svntest.actions.run_and_verify_status(wc_dir, expected_status)
+@XFail()
@Issue(3899)
-def copying_conflicts(sbox):
- """copying conflicts"""
+def copy_and_move_conflicts(sbox):
+ """copy and move conflicts"""
- # The destination of a copy operation should *not* be conflicted,
- # and should contain the "mine-full" contents.
+ # The destination of a copy or move operation should *not* be
+ # conflicted, and should contain the "mine-full" contents.
sbox.build()
wc = sbox.ospath
@@ -5306,9 +5307,8 @@ def copying_conflicts(sbox):
# Resolve one text conflict via marker file deletion.
os.remove(wc('A/B/E/beta.merge-left.r3'))
+ os.rename(wc('A/B/E/beta.merge-right.r4'), wc('A/B/E/beta'))
os.remove(wc('A/B/E/beta.working'))
- os.remove(wc('A/B/E/beta'))
- os.rename(wc('A/B/E/beta.merge-right.r4'), wc('A/B/E/beta'))
# Prepare for local copies and moves.
sbox.simple_mkdir('copy-dest')
@@ -5392,6 +5392,54 @@ def copying_conflicts(sbox):
})
svntest.actions.verify_disk(wc('copy-dest'), expected_disk, True)
+ # Move conflict victims.
+ sbox.simple_move('A/B/E/alpha', 'move-dest')
+ sbox.simple_move('A/D/H', 'move-dest')
+ sbox.simple_move('A/D/G', 'move-dest')
+ sbox.simple_move('A/Q', 'move-dest')
+
+ # Move directories with conflicted children.
+ sbox.simple_move('A/B', 'move-dest')
+ sbox.simple_move('A/D', 'move-dest')
+
+ # Expect same status and disk content as at the copy destination, except
+ # that A/B/E/alpha, A/D/G, and A/D/H were moved away first.
+ expected_status.wc_dir = wc('move-dest')
+ expected_status.tweak('B/E/alpha',
+ 'D/H',
+ 'D/H/chi',
+ 'D/H/omega',
+ 'D/H/psi',
+ status='D ')
+ # A/D/G had been re-added from r4 due to a "local edit, incoming delete"
+ # tree conflict, so moving it away has a different effect.
+ expected_status.remove('D/G',
+ 'D/G/pi',
+ 'D/G/rho',
+ 'D/G/tau')
+ svntest.actions.run_and_verify_status(wc('move-dest'), expected_status)
+
+ expected_disk = svntest.wc.State('', {
+ 'B/E/beta' : Item(contents="This is the file 'beta'.\n"
+ "Edit for merge\n"),
+ 'B/lambda' : Item(contents="This is the file 'lambda'.\n"),
+ 'B/F' : Item(),
+ 'H' : Item(props={'foo':'100'}),
+ 'H/chi' : Item(contents="This is the file 'chi'.\n",
+ props={'foo':'100'}),
+ 'H/psi' : Item(contents="This is the file 'psi'.\n"),
+ 'H/omega' : Item(contents="This is the file 'omega'.\n"),
+ 'D' : Item(),
+ 'G/tau' : Item(contents="This is the file 'tau'.\n"),
+ 'G/rho' : Item(contents="This is the file 'rho'.\n"
+ "Local edit\n"),
+ 'G/pi' : Item(contents="This is the file 'pi'.\n"),
+ 'Q/sigma' : Item(contents="New local file\n"),
+ 'alpha' : Item(contents="This is the file 'alpha'.\n"
+ "Local edit\n"),
+ })
+ svntest.actions.verify_disk(wc('move-dest'), expected_disk, True)
+
########################################################################
# Run the tests
@@ -5501,7 +5549,7 @@ test_list = [ None,
deleted_file_with_case_clash,
copy_base_of_deleted,
case_only_rename,
- copying_conflicts,
+ copy_and_move_conflicts,
]
if __name__ == '__main__':