Signed-off-by: David Symonds <dsymonds@xxxxxxxxx> --- These test cases also expose a bug in git-ls-files, where: git-ls-files t/../ (with or without --full-name) returns no files. t/t2008-checkout-subdir.sh | 47 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 47 insertions(+), 0 deletions(-) create mode 100755 t/t2008-checkout-subdir.sh diff --git a/t/t2008-checkout-subdir.sh b/t/t2008-checkout-subdir.sh new file mode 100755 index 0000000..45833f3 --- /dev/null +++ b/t/t2008-checkout-subdir.sh @@ -0,0 +1,47 @@ +#!/bin/sh +# +# Copyright (c) 2007 David Symonds + +test_description='git checkout from subdirectories' + +. ./test-lib.sh + +test_expect_success setup ' + + echo base > file0 && + git add file0 && + mkdir dir1 && + echo hello > dir1/file1 && + git add dir1/file1 && + test_tick && + mkdir dir2 && + echo bonjour > dir2/file2 && + git add dir2/file2 && + git commit -m "populate tree" + +' + +test_expect_success 'remove and restore with relative path' ' + + cd dir1 && + rm ../file0 && + git checkout HEAD -- ../file0 && test -f ../file0 && + rm ../dir2/file2 && + git checkout HEAD -- ../dir2/file2 && test -f ../dir2/file2 && + rm ../file0 ./file1 && + git checkout HEAD -- .. && test -f ../file0 && test -f ./file1 && + rm file1 && + git checkout HEAD -- ../dir1/../dir1/file1 && test -f ./file1 + +' + +test_expect_failure 'checkout with relative path outside tree should fail (1)' \ + 'git checkout HEAD - ../file0' + +test_expect_failure 'checkout with relative path outside tree should fail (2)' \ + 'cd dir1 && git checkout HEAD - ./file0' + +test_expect_failure 'checkout with relative path outside tree should fail (2)' \ + 'cd dir1 && git checkout HEAD - ../../file0' + +test_done -- 1.5.3.1 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html