lstat_cache(): print a warning if doing ping-pong between cache types
[gitweb.git] / t / t3600-rm.sh
index 5b4d6f71387ce7f30cb7ee6b596357aa1942ab6e..95542e9cfec1d7cc0631521c1c2bef3b7a139af7 100755 (executable)
@@ -187,8 +187,8 @@ test_expect_success 'but with -f it should work.' '
        test_must_fail git ls-files --error-unmatch baz
 '
 
-test_expect_failure 'refuse to remove cached empty file with modifications' '
-       touch empty &&
+test_expect_success 'refuse to remove cached empty file with modifications' '
+       >empty &&
        git add empty &&
        echo content >empty &&
        test_must_fail git rm --cached empty
@@ -251,4 +251,21 @@ test_expect_success 'refresh index before checking if it is up-to-date' '
 
 '
 
+test_expect_success 'choking "git rm" should not let it die with cruft' '
+       git reset -q --hard &&
+       H=0000000000000000000000000000000000000000 &&
+       i=0 &&
+       while test $i -lt 12000
+       do
+           echo "100644 $H 0   some-file-$i"
+           i=$(( $i + 1 ))
+       done | git update-index --index-info &&
+       git rm -n "some-file-*" | :;
+       test -f .git/index.lock
+       status=$?
+       rm -f .git/index.lock
+       git reset -q --hard
+       test "$status" != 0
+'
+
 test_done