Author: jcorvel
Date: Sun Jan 15 00:10:38 2012
New Revision: 1231600
URL: http://svn.apache.org/viewvc?rev=1231600&view=rev
Log:
Add a test for issue #4023 "on Windows, 'svn rm' incorrectly deletes on-disk
file if it is case-clashing with intended (non-on-disk) target".
* subversion/tests/cmdline/basic_tests.py
(rm_missing_with_case_clashing_ondisk_item): New test, currently XFailing
on case-insensitive filesystems.
Modified:
subversion/trunk/subversion/tests/cmdline/basic_tests.py
Modified: subversion/trunk/subversion/tests/cmdline/basic_tests.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/basic_tests.py?rev=1231600&r1=1231599&r2=1231600&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/basic_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/basic_tests.py Sun Jan 15
00:10:38 2012
@@ -2886,6 +2886,43 @@ def quiet_commits(sbox):
expected_disk,
expected_status)
+# Regression test for issue #4023: on Windows, 'svn rm' incorrectly deletes
+# on-disk file if it is case-clashing with intended (non-on-disk) target.
+@Issue(4023)
+@XFail(svntest.main.is_fs_case_insensitive)
+def rm_missing_with_case_clashing_ondisk_item(sbox):
+ """rm missing item with case-clashing ondisk item"""
+
+ sbox.build(read_only = True)
+ wc_dir = sbox.wc_dir
+
+ iota_path = os.path.join(wc_dir, 'iota')
+ IOTA_path = os.path.join(wc_dir, 'IOTA')
+
+ # Out-of-svn move, to make iota missing, while IOTA appears as unversioned.
+ os.rename(iota_path, IOTA_path)
+
+ expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+ expected_status.add({
+ 'iota' : Item(status='! ', wc_rev='1'),
+ 'IOTA' : Item(status='? '),
+ })
+ svntest.actions.run_and_verify_unquiet_status(wc_dir, expected_status)
+
+ # 'svn rm' iota, should leave IOTA alone.
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'rm', iota_path)
+
+ # Test status: the unversioned IOTA should still be there.
+ expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+ expected_status.add({
+ 'iota' : Item(status='D ', wc_rev='1'),
+ 'IOTA' : Item(status='? '),
+ })
+ svntest.actions.run_and_verify_unquiet_status(wc_dir, expected_status)
+
+
+
########################################################################
# Run the tests
@@ -2950,6 +2987,7 @@ test_list = [ None,
ls_multiple_and_non_existent_targets,
add_multiple_targets,
quiet_commits,
+ rm_missing_with_case_clashing_ondisk_item,
]
if __name__ == '__main__':