]>
Commit | Line | Data |
---|---|---|
fed1b5ca DS |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2007 David Symonds | |
4 | ||
5 | test_description='git checkout from subdirectories' | |
6 | ||
7 | . ./test-lib.sh | |
8 | ||
9 | test_expect_success setup ' | |
10 | ||
11 | echo "base" > file0 && | |
12 | git add file0 && | |
13 | mkdir dir1 && | |
14 | echo "hello" > dir1/file1 && | |
15 | git add dir1/file1 && | |
16 | mkdir dir2 && | |
17 | echo "bonjour" > dir2/file2 && | |
18 | git add dir2/file2 && | |
19 | test_tick && | |
20 | git commit -m "populate tree" | |
21 | ||
22 | ' | |
23 | ||
24 | test_expect_success 'remove and restore with relative path' ' | |
25 | ||
26 | ( | |
27 | cd dir1 && | |
28 | rm ../file0 && | |
29 | git checkout HEAD -- ../file0 && | |
30 | test "base" = "$(cat ../file0)" && | |
31 | rm ../dir2/file2 && | |
32 | git checkout HEAD -- ../dir2/file2 && | |
33 | test "bonjour" = "$(cat ../dir2/file2)" && | |
34 | rm ../file0 ./file1 && | |
35 | git checkout HEAD -- .. && | |
36 | test "base" = "$(cat ../file0)" && | |
37 | test "hello" = "$(cat file1)" | |
38 | ) | |
39 | ||
40 | ' | |
41 | ||
42 | test_expect_success 'checkout with empty prefix' ' | |
43 | ||
44 | rm file0 && | |
45 | git checkout HEAD -- file0 && | |
46 | test "base" = "$(cat file0)" | |
47 | ||
48 | ' | |
49 | ||
50 | test_expect_success 'checkout with simple prefix' ' | |
51 | ||
52 | rm dir1/file1 && | |
53 | git checkout HEAD -- dir1 && | |
54 | test "hello" = "$(cat dir1/file1)" && | |
55 | rm dir1/file1 && | |
56 | git checkout HEAD -- dir1/file1 && | |
57 | test "hello" = "$(cat dir1/file1)" | |
58 | ||
59 | ' | |
60 | ||
b0afc026 SB |
61 | test_expect_success 'checkout with complex relative path' ' |
62 | ( | |
63 | cd dir1 && | |
64 | rm file1 && | |
65 | git checkout HEAD -- ../dir1/../dir1/file1 && | |
66 | test "hello" = "$(cat file1)" | |
67 | ) | |
fed1b5ca DS |
68 | ' |
69 | ||
41ac414e | 70 | test_expect_success 'relative path outside tree should fail' \ |
74359821 | 71 | 'test_must_fail git checkout HEAD -- ../../Makefile' |
fed1b5ca | 72 | |
41ac414e | 73 | test_expect_success 'incorrect relative path to file should fail (1)' \ |
74359821 | 74 | 'test_must_fail git checkout HEAD -- ../file0' |
fed1b5ca | 75 | |
41ac414e | 76 | test_expect_success 'incorrect relative path should fail (2)' \ |
74359821 | 77 | '( cd dir1 && test_must_fail git checkout HEAD -- ./file0 )' |
fed1b5ca | 78 | |
41ac414e | 79 | test_expect_success 'incorrect relative path should fail (3)' \ |
74359821 | 80 | '( cd dir1 && test_must_fail git checkout HEAD -- ../../file0 )' |
fed1b5ca DS |
81 | |
82 | test_done |