Code

Add tests to catch problems with un-unlinkable symlinks
authorJunio C Hamano <gitster@pobox.com>
Wed, 19 Mar 2008 04:59:39 +0000 (21:59 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 19 Mar 2008 05:17:22 +0000 (22:17 -0700)
This currently fails not because we refuse to check out, but because we
detect error but incorrectly discard it in the callchain.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t1004-read-tree-m-u-wf.sh

index 283e77cc51d241bedbd016bbfa4d418e521e49e8..135614890419363d9cc0e3dce1912b6178f793f4 100755 (executable)
@@ -157,6 +157,41 @@ test_expect_success '3-way not overwriting local changes (their side)' '
 
 '
 
+test_expect_success 'funny symlink in work tree' '
+
+       git reset --hard &&
+       git checkout -b sym-b side-b &&
+       mkdir -p a &&
+       >a/b &&
+       git add a/b &&
+       git commit -m "side adds a/b" &&
+
+       rm -fr a &&
+       git checkout -b sym-a side-a &&
+       mkdir -p a &&
+       ln -s ../b a/b &&
+       git add a/b &&
+       git commit -m "we add a/b" &&
+
+       git read-tree -m -u sym-a sym-a sym-b
+
+'
+
+test_expect_failure 'funny symlink in work tree, un-unlink-able' '
+
+       rm -fr a b &&
+       git reset --hard &&
+
+       git checkout sym-a &&
+       chmod a-w a &&
+       test_must_fail git read-tree -m -u sym-a sym-a sym-b
+
+'
+
+# clean-up from the above test
+chmod a+w a
+rm -fr a b
+
 test_expect_success 'D/F setup' '
 
        git reset --hard &&