t3600: test behavior of reverse-d/f conflict
authorJeff King <peff@peff.net>
Thu, 4 Apr 2013 19:03:58 +0000 (15:03 -0400)
committerJunio C Hamano <gitster@pobox.com>
Thu, 4 Apr 2013 19:28:53 +0000 (12:28 -0700)
The previous commit taught "rm" that it is safe to consider
"d/f" removed when "d" has become a non-directory. This
patch adds a test for the opposite: a file "d" that becomes
a directory.

In this case, "git rm" does need to complain, because we
should not be removing arbitrary content under "d". Git
already behaves correctly, but let's make sure that remains
the case by protecting the behavior with a test.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t3600-rm.sh
index 73772b27908f76e53fc206cf5b9355b2c160caf6..a2e1a0396564506362fddf12be2014f08e36e372 100755 (executable)
@@ -647,4 +647,16 @@ test_expect_success SYMLINKS 'rm of d/f when d has become a dangling symlink' '
        test_path_is_missing d
 '
 
+test_expect_success 'rm of file when it has become a directory' '
+       rm -rf d &&
+       >d &&
+       git add d &&
+       rm -f d &&
+       mkdir d &&
+       >d/f &&
+       test_must_fail git rm d &&
+       git rev-parse --verify :d &&
+       test_path_is_file d/f
+'
+
 test_done