Author: philip
Date: Fri Mar 16 09:29:49 2012
New Revision: 1301390
URL: http://svn.apache.org/viewvc?rev=1301390&view=rev
Log:
Fallout from the multi-layer-move merge: updates of some moved
files don't work.
* subversion/tests/cmdline/svntest/sandbox.py
(simple_update): Add optional revision parameter.
* subversion/tests/cmdline/update_tests.py
(update_move_text_mod update_nested_move_text_mod): New XFAIL tests.
(test_list): Add new tests.
Modified:
subversion/trunk/subversion/tests/cmdline/svntest/sandbox.py
subversion/trunk/subversion/tests/cmdline/update_tests.py
Modified: subversion/trunk/subversion/tests/cmdline/svntest/sandbox.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/svntest/sandbox.py?rev=1301390&r1=1301389&r2=1301390&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/svntest/sandbox.py (original)
+++ subversion/trunk/subversion/tests/cmdline/svntest/sandbox.py Fri Mar 16
09:29:49 2012
@@ -200,14 +200,14 @@ class Sandbox:
temporary and 'TEMP' or 'PERM',
parts[1])
- def simple_update(self, target=None):
+ def simple_update(self, target=None, revision='HEAD'):
"""Update the WC or TARGET.
TARGET is a relpath relative to the WC."""
if target is None:
target = self.wc_dir
else:
target = self.ospath(target)
- svntest.main.run_svn(False, 'update', target)
+ svntest.main.run_svn(False, 'update', target, '-r', revision)
def simple_switch(self, url, target=None):
"""Switch the WC or TARGET to URL.
Modified: subversion/trunk/subversion/tests/cmdline/update_tests.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/update_tests.py?rev=1301390&r1=1301389&r2=1301390&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/update_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/update_tests.py Fri Mar 16
09:29:49 2012
@@ -5696,6 +5696,101 @@ def update_moved_dir_file_move(sbox):
None, None, None,
None, None, 1)
+@XFail()
+def update_move_text_mod(sbox):
+ "text mod to moved files"
+
+ sbox.build()
+ wc_dir = sbox.wc_dir
+ svntest.main.file_append(sbox.ospath('A/B/lambda'), "modified\n")
+ svntest.main.file_append(sbox.ospath('A/B/E/beta'), "modified\n")
+ sbox.simple_commit()
+ sbox.simple_update(revision=1)
+
+ sbox.simple_move("A/B/E", "A/E2")
+ sbox.simple_move("A/B/lambda", "A/lambda2")
+
+ expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+ expected_status.tweak('A/B/E', 'A/B/E/alpha', 'A/B/E/beta', 'A/B/lambda',
+ status='D ')
+ expected_status.add({
+ 'A/E2' : Item(status='A ', copied='+', wc_rev='-'),
+ 'A/E2/alpha' : Item(status=' ', copied='+', wc_rev='-'),
+ 'A/E2/beta' : Item(status=' ', copied='+', wc_rev='-'),
+ 'A/lambda2' : Item(status='A ', copied='+', wc_rev='-'),
+ })
+
+ svntest.actions.run_and_verify_status(wc_dir, expected_status)
+
+ expected_output = svntest.wc.State(wc_dir, {
+ 'A/lambda2' : Item(status='U '),
+ 'A/E2/beta' : Item(status='U '),
+ })
+ expected_disk = svntest.main.greek_state.copy()
+ expected_disk.remove('A/B/E/alpha', 'A/B/E/beta', 'A/B/E', 'A/B/lambda')
+ expected_disk.add({
+ 'A/E2' : Item(),
+ 'A/E2/alpha' : Item(contents="This is the file 'alpha'.\n"),
+ 'A/E2/beta' : Item(contents="This is the file 'beta'.\nmodified\n"),
+ 'A/lambda2' : Item(contents="This is the file 'lambda'.\nmodified\n"),
+ })
+ expected_status.tweak(wc_rev=2)
+ expected_status.tweak('A/E2', 'A/E2/alpha', 'A/E2/beta', 'A/lambda2',
+ wc_rev='-')
+ ### XFAIL 'A/E2/beta' is status R but should be ' '
+ svntest.actions.run_and_verify_update(wc_dir,
+ expected_output,
+ expected_disk,
+ expected_status,
+ None, None, None,
+ None, None, 1)
+
+@XFail()
+def update_nested_move_text_mod(sbox):
+ "text mod to moved file in moved dir"
+
+ sbox.build()
+ wc_dir = sbox.wc_dir
+ svntest.main.file_append(sbox.ospath('A/B/E/alpha'), "modified\n")
+ sbox.simple_commit()
+ sbox.simple_update(revision=1)
+
+ sbox.simple_move("A/B/E", "A/E2")
+ sbox.simple_move("A/E2/alpha", "A/alpha2")
+
+ expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+ expected_status.tweak('A/B/E', 'A/B/E/alpha', 'A/B/E/beta', status='D ')
+ expected_status.add({
+ 'A/E2' : Item(status='A ', copied='+', wc_rev='-'),
+ 'A/E2/alpha' : Item(status='D ', copied='+', wc_rev='-'),
+ 'A/E2/beta' : Item(status=' ', copied='+', wc_rev='-'),
+ 'A/alpha2' : Item(status='A ', copied='+', wc_rev='-'),
+ })
+
+ svntest.actions.run_and_verify_status(wc_dir, expected_status)
+
+ expected_output = svntest.wc.State(wc_dir, {
+ 'A/E2/beta' : Item(status='U '),
+ })
+ expected_disk = svntest.main.greek_state.copy()
+ expected_disk.remove('A/B/E/alpha', 'A/B/E/beta', 'A/B/E')
+ expected_disk.add({
+ 'A/E2' : Item(),
+ 'A/E2/beta' : Item(contents="This is the file 'beta'.\n"),
+ 'A/alpha2' : Item(contents="This is the file 'alpha'.\nmodified\n"),
+ })
+ expected_status.tweak(wc_rev=2)
+ expected_status.tweak('A/E2', 'A/E2/alpha', 'A/E2/beta', 'A/alpha2',
+ wc_rev='-')
+ ### XFAIL update fails 'No such file'
+ svntest.actions.run_and_verify_update(wc_dir,
+ expected_output,
+ expected_disk,
+ expected_status,
+ None, None, None,
+ None, None, 1)
+
+
#######################################################################
# Run the tests
@@ -5768,6 +5863,8 @@ test_list = [ None,
update_moved_dir_dir_add,
update_moved_dir_file_move,
update_binary_file_3,
+ update_move_text_mod,
+ update_nested_move_text_mod,
]
if __name__ == '__main__':