diff options
author | Junio C Hamano <gitster@pobox.com> | 2008-03-18 21:59:39 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-03-18 22:17:22 -0700 |
commit | 8a785dc921386dac628a2a04ebe5f48deb7cc1a8 (patch) | |
tree | 924cea62948c885e5d46f789bdc3c492446fd901 | |
parent | 8d14ac945403d6d4b1de9f9fd680247e831c0bfc (diff) | |
download | git-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-x | t/t1004-read-tree-m-u-wf.sh | 35 |
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 && |