help: use parseopt
[git.git] / t / t7010-setup.sh
blobe809e0e2c9ff491cdb288386baff6b1c016493ef
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
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 diff -u expect current
26 test_expect_success 'git add (funny relative)' '
28 rm -f .git/index &&
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
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 diff -u expect current
50 test_expect_success 'git rm (funny relative)' '
52 rm -f .git/index &&
53 git add a &&
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
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 diff -u expect current
74 test_expect_success 'git ls-files (relative #1)' '
76 rm -f .git/index &&
77 git add a &&
79 cd a/b &&
80 git ls-files "../b/c"
81 ) >current &&
82 echo c/d >expect &&
83 diff -u expect current
87 test_expect_success 'git ls-files (relative #2)' '
89 rm -f .git/index &&
90 git add a &&
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
100 test_expect_success 'git ls-files (relative #3)' '
102 rm -f .git/index &&
103 git add a &&
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
117 test_expect_success 'commit using absolute path names' '
118 git commit -m "foo" &&
119 echo aa >>a/b/c/d &&
120 git commit -m "aa" "$(pwd)/a/b/c/d"
123 test_expect_success 'log using absolute path names' '
124 echo bb >>a/b/c/d &&
125 git commit -m "bb" $(pwd)/a/b/c/d &&
127 git log a/b/c/d >f1.txt &&
128 git log "$(pwd)/a/b/c/d" >f2.txt &&
129 diff -u f1.txt f2.txt
132 test_expect_success 'blame using absolute path names' '
133 git blame a/b/c/d >f1.txt &&
134 git blame "$(pwd)/a/b/c/d" >f2.txt &&
135 diff -u f1.txt f2.txt
138 test_expect_success 'setup deeper work tree' '
139 test_create_repo tester
142 test_expect_success 'add a directory outside the work tree' '(
143 cd tester &&
144 d1="$(cd .. ; pwd)" &&
145 git add "$d1"
148 test_expect_success 'add a file outside the work tree, nasty case 1' '(
149 cd tester &&
150 f="$(pwd)x" &&
151 echo "$f" &&
152 touch "$f" &&
153 git add "$f"
156 test_expect_success 'add a file outside the work tree, nasty case 2' '(
157 cd tester &&
158 f="$(pwd | sed "s/.$//")x" &&
159 echo "$f" &&
160 touch "$f" &&
161 git add "$f"
164 test_done