setup: sanitize absolute and funny paths in get_pathspec()
[git] / t / t7010-setup.sh
1 #!/bin/sh
2
3 test_description='setup taking and sanitizing funny paths'
4
5 . ./test-lib.sh
6
7 test_expect_success setup '
8
9         mkdir -p a/b/c a/e &&
10         D=$(pwd) &&
11         >a/b/c/d &&
12         >a/e/f
13
14 '
15
16 test_expect_success 'git add (absolute)' '
17
18         git add "$D/a/b/c/d" &&
19         git ls-files >current &&
20         echo a/b/c/d >expect &&
21         diff -u expect current
22
23 '
24
25
26 test_expect_success 'git add (funny relative)' '
27
28         rm -f .git/index &&
29         (
30                 cd a/b &&
31                 git add "../e/./f"
32         ) &&
33         git ls-files >current &&
34         echo a/e/f >expect &&
35         diff -u expect current
36
37 '
38
39 test_expect_success 'git rm (absolute)' '
40
41         rm -f .git/index &&
42         git add a &&
43         git rm -f --cached "$D/a/b/c/d" &&
44         git ls-files >current &&
45         echo a/e/f >expect &&
46         diff -u expect current
47
48 '
49
50 test_expect_success 'git rm (funny relative)' '
51
52         rm -f .git/index &&
53         git add a &&
54         (
55                 cd a/b &&
56                 git rm -f --cached "../e/./f"
57         ) &&
58         git ls-files >current &&
59         echo a/b/c/d >expect &&
60         diff -u expect current
61
62 '
63
64 test_expect_success 'git ls-files (absolute)' '
65
66         rm -f .git/index &&
67         git add a &&
68         git ls-files "$D/a/e/../b" >current &&
69         echo a/b/c/d >expect &&
70         diff -u expect current
71
72 '
73
74 test_expect_success 'git ls-files (relative #1)' '
75
76         rm -f .git/index &&
77         git add a &&
78         (
79                 cd a/b &&
80                 git ls-files "../b/c"
81         )  >current &&
82         echo c/d >expect &&
83         diff -u expect current
84
85 '
86
87 test_expect_success 'git ls-files (relative #2)' '
88
89         rm -f .git/index &&
90         git add a &&
91         (
92                 cd a/b &&
93                 git ls-files --full-name "../e/f"
94         )  >current &&
95         echo a/e/f >expect &&
96         diff -u expect current
97
98 '
99
100 test_expect_success 'git ls-files (relative #3)' '
101
102         rm -f .git/index &&
103         git add a &&
104         (
105                 cd a/b &&
106                 if git ls-files "../e/f"
107                 then
108                         echo Gaah, should have failed
109                         exit 1
110                 else
111                         : happy
112                 fi
113         )
114
115 '
116
117 test_done