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 /t/t1004-read-tree-m-u-wf.sh | |
parent | Test: catch if trash cannot be removed (diff) | |
download | tgif-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>
Diffstat (limited to 't/t1004-read-tree-m-u-wf.sh')
-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 283e77cc51..1356148904 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 && |