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


Reply via email to