aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-03-18 21:59:39 -0700
committerJunio C Hamano <gitster@pobox.com>2008-03-18 22:17:22 -0700
commit8a785dc921386dac628a2a04ebe5f48deb7cc1a8 (patch)
tree924cea62948c885e5d46f789bdc3c492446fd901
parent8d14ac945403d6d4b1de9f9fd680247e831c0bfc (diff)
downloadgit-8a785dc921386dac628a2a04ebe5f48deb7cc1a8.tar.gz
git-8a785dc921386dac628a2a04ebe5f48deb7cc1a8.tar.xz
Add tests to catch problems with un-unlinkable symlinks
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>
-rwxr-xr-xt/t1004-read-tree-m-u-wf.sh35
1 files changed, 35 insertions, 0 deletions
diff --git a/t/t1004-read-tree-m-u-wf.sh b/t/t1004-read-tree-m-u-wf.sh
index 283e77cc5..135614890 100755
--- a/t/t1004-read-tree-m-u-wf.sh
+++ b/t/t1004-read-tree-m-u-wf.sh
@@ -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 &&