Code

test that git status works with merge conflict in, .gitmodules
[git.git] / t / t7010-setup.sh
1 #!/bin/sh
3 test_description='setup taking and sanitizing funny paths'
5 . ./test-lib.sh
7 test_expect_success setup '
9         mkdir -p a/b/c a/e &&
10         D=$(pwd) &&
11         >a/b/c/d &&
12         >a/e/f
14 '
16 test_expect_success 'git add (absolute)' '
18         git add "$D/a/b/c/d" &&
19         git ls-files >current &&
20         echo a/b/c/d >expect &&
21         test_cmp expect current
23 '
26 test_expect_success 'git add (funny relative)' '
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         test_cmp expect current
37 '
39 test_expect_success 'git rm (absolute)' '
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         test_cmp expect current
48 '
50 test_expect_success 'git rm (funny relative)' '
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         test_cmp expect current
62 '
64 test_expect_success 'git ls-files (absolute)' '
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         test_cmp expect current
72 '
74 test_expect_success 'git ls-files (relative #1)' '
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         test_cmp expect current
85 '
87 test_expect_success 'git ls-files (relative #2)' '
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         test_cmp expect current
98 '
100 test_expect_success 'git ls-files (relative #3)' '
102         rm -f .git/index &&
103         git add a &&
104         (
105                 cd a/b &&
106                 git ls-files "../e/f"
107         )  >current &&
108         echo ../e/f >expect &&
109         test_cmp expect current
113 test_expect_success 'commit using absolute path names' '
114         git commit -m "foo" &&
115         echo aa >>a/b/c/d &&
116         git commit -m "aa" "$(pwd)/a/b/c/d"
119 test_expect_success 'log using absolute path names' '
120         echo bb >>a/b/c/d &&
121         git commit -m "bb" "$(pwd)/a/b/c/d" &&
123         git log a/b/c/d >f1.txt &&
124         git log "$(pwd)/a/b/c/d" >f2.txt &&
125         test_cmp f1.txt f2.txt
128 test_expect_success 'blame using absolute path names' '
129         git blame a/b/c/d >f1.txt &&
130         git blame "$(pwd)/a/b/c/d" >f2.txt &&
131         test_cmp f1.txt f2.txt
134 test_expect_success 'setup deeper work tree' '
135         test_create_repo tester
138 test_expect_success 'add a directory outside the work tree' '(
139         cd tester &&
140         d1="$(cd .. ; pwd)" &&
141         test_must_fail git add "$d1"
142 )'
145 test_expect_success 'add a file outside the work tree, nasty case 1' '(
146         cd tester &&
147         f="$(pwd)x" &&
148         echo "$f" &&
149         touch "$f" &&
150         test_must_fail git add "$f"
151 )'
153 test_expect_success 'add a file outside the work tree, nasty case 2' '(
154         cd tester &&
155         f="$(pwd | sed "s/.$//")x" &&
156         echo "$f" &&
157         touch "$f" &&
158         test_must_fail git add "$f"
159 )'
161 test_done