]>
Commit | Line | Data |
---|---|---|
c43ce6d6 JH |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2006 Junio C Hamano | |
4 | # | |
5 | ||
6 | test_description='Try various core-level commands in subdirectory. | |
7 | ' | |
8 | ||
9 | . ./test-lib.sh | |
ea5070c9 | 10 | . "$TEST_DIRECTORY"/lib-read-tree.sh |
c43ce6d6 JH |
11 | |
12 | test_expect_success setup ' | |
13 | long="a b c d e f g h i j k l m n o p q r s t u v w x y z" && | |
14 | for c in $long; do echo $c; done >one && | |
15 | mkdir dir && | |
16 | for c in x y z $long a b c; do echo $c; done >dir/two && | |
17 | cp one original.one && | |
18 | cp dir/two original.two | |
19 | ' | |
c43ce6d6 JH |
20 | |
21 | test_expect_success 'update-index and ls-files' ' | |
5be60078 JH |
22 | git update-index --add one && |
23 | case "`git ls-files`" in | |
335f8787 | 24 | one) echo pass one ;; |
c43ce6d6 JH |
25 | *) echo bad one; exit 1 ;; |
26 | esac && | |
18a82692 JN |
27 | ( |
28 | cd dir && | |
29 | git update-index --add two && | |
30 | case "`git ls-files`" in | |
31 | two) echo pass two ;; | |
32 | *) echo bad two; exit 1 ;; | |
33 | esac | |
fd4ec4f2 | 34 | ) && |
5be60078 | 35 | case "`git ls-files`" in |
335f8787 | 36 | dir/two"$LF"one) echo pass both ;; |
c43ce6d6 JH |
37 | *) echo bad; exit 1 ;; |
38 | esac | |
39 | ' | |
40 | ||
41 | test_expect_success 'cat-file' ' | |
5be60078 | 42 | two=`git ls-files -s dir/two` && |
c43ce6d6 JH |
43 | two=`expr "$two" : "[0-7]* \\([0-9a-f]*\\)"` && |
44 | echo "$two" && | |
5be60078 | 45 | git cat-file -p "$two" >actual && |
c43ce6d6 | 46 | cmp dir/two actual && |
fd3c32c9 JL |
47 | ( |
48 | cd dir && | |
49 | git cat-file -p "$two" >actual && | |
50 | cmp two actual | |
51 | ) | |
c43ce6d6 JH |
52 | ' |
53 | rm -f actual dir/actual | |
54 | ||
55 | test_expect_success 'diff-files' ' | |
c43ce6d6 JH |
56 | echo a >>one && |
57 | echo d >>dir/two && | |
5be60078 | 58 | case "`git diff-files --name-only`" in |
335f8787 | 59 | dir/two"$LF"one) echo pass top ;; |
c43ce6d6 JH |
60 | *) echo bad top; exit 1 ;; |
61 | esac && | |
62 | # diff should not omit leading paths | |
fd3c32c9 JL |
63 | ( |
64 | cd dir && | |
65 | case "`git diff-files --name-only`" in | |
66 | dir/two"$LF"one) echo pass subdir ;; | |
67 | *) echo bad subdir; exit 1 ;; | |
68 | esac && | |
69 | case "`git diff-files --name-only .`" in | |
70 | dir/two) echo pass subdir limited ;; | |
71 | *) echo bad subdir limited; exit 1 ;; | |
72 | esac | |
73 | ) | |
c43ce6d6 JH |
74 | ' |
75 | ||
76 | test_expect_success 'write-tree' ' | |
5be60078 | 77 | top=`git write-tree` && |
c43ce6d6 | 78 | echo $top && |
fd3c32c9 JL |
79 | ( |
80 | cd dir && | |
81 | sub=`git write-tree` && | |
82 | echo $sub && | |
83 | test "z$top" = "z$sub" | |
84 | ) | |
c43ce6d6 JH |
85 | ' |
86 | ||
87 | test_expect_success 'checkout-index' ' | |
5be60078 | 88 | git checkout-index -f -u one && |
c43ce6d6 | 89 | cmp one original.one && |
fd3c32c9 JL |
90 | ( |
91 | cd dir && | |
92 | git checkout-index -f -u two && | |
93 | cmp two ../original.two | |
94 | ) | |
c43ce6d6 JH |
95 | ' |
96 | ||
97 | test_expect_success 'read-tree' ' | |
c43ce6d6 | 98 | rm -f one dir/two && |
5be60078 | 99 | tree=`git write-tree` && |
ea5070c9 | 100 | read_tree_u_must_succeed --reset -u "$tree" && |
c43ce6d6 JH |
101 | cmp one original.one && |
102 | cmp dir/two original.two && | |
fd3c32c9 JL |
103 | ( |
104 | cd dir && | |
105 | rm -f two && | |
ea5070c9 | 106 | read_tree_u_must_succeed --reset -u "$tree" && |
fd3c32c9 JL |
107 | cmp two ../original.two && |
108 | cmp ../one ../original.one | |
109 | ) | |
c43ce6d6 JH |
110 | ' |
111 | ||
101662c2 MG |
112 | test_expect_success 'alias expansion' ' |
113 | ( | |
114 | git config alias.ss status && | |
115 | cd dir && | |
116 | git status && | |
117 | git ss | |
118 | ) | |
119 | ' | |
0daed417 | 120 | |
9931df3f | 121 | test_expect_success NOT_MINGW '!alias expansion' ' |
0daed417 MG |
122 | pwd >expect && |
123 | ( | |
124 | git config alias.test !pwd && | |
125 | cd dir && | |
126 | git test >../actual | |
127 | ) && | |
128 | test_cmp expect actual | |
129 | ' | |
130 | ||
7cf16a14 MG |
131 | test_expect_success 'GIT_PREFIX for !alias' ' |
132 | printf "dir/" >expect && | |
133 | ( | |
134 | git config alias.test "!sh -c \"printf \$GIT_PREFIX\"" && | |
135 | cd dir && | |
136 | git test >../actual | |
137 | ) && | |
138 | test_cmp expect actual | |
139 | ' | |
140 | ||
1f5d271f DA |
141 | test_expect_success 'GIT_PREFIX for built-ins' ' |
142 | # Use GIT_EXTERNAL_DIFF to test that the "diff" built-in | |
143 | # receives the GIT_PREFIX variable. | |
144 | printf "dir/" >expect && | |
145 | printf "#!/bin/sh\n" >diff && | |
146 | printf "printf \"\$GIT_PREFIX\"" >>diff && | |
147 | chmod +x diff && | |
148 | ( | |
149 | cd dir && | |
150 | printf "change" >two && | |
151 | env GIT_EXTERNAL_DIFF=./diff git diff >../actual | |
152 | git checkout -- two | |
153 | ) && | |
154 | test_cmp expect actual | |
155 | ' | |
156 | ||
3dff5379 | 157 | test_expect_success 'no file/rev ambiguity check inside .git' ' |
68025633 | 158 | git commit -a -m 1 && |
fd3c32c9 JL |
159 | ( |
160 | cd .git && | |
161 | git show -s HEAD | |
162 | ) | |
68025633 JS |
163 | ' |
164 | ||
3dff5379 | 165 | test_expect_success 'no file/rev ambiguity check inside a bare repo' ' |
68025633 | 166 | git clone -s --bare .git foo.git && |
fd3c32c9 JL |
167 | ( |
168 | cd foo.git && | |
169 | GIT_DIR=. git show -s HEAD | |
170 | ) | |
68025633 JS |
171 | ' |
172 | ||
173 | # This still does not work as it should... | |
3dff5379 | 174 | : test_expect_success 'no file/rev ambiguity check inside a bare repo' ' |
68025633 | 175 | git clone -s --bare .git foo.git && |
fd3c32c9 JL |
176 | ( |
177 | cd foo.git && | |
178 | git show -s HEAD | |
179 | ) | |
68025633 JS |
180 | ' |
181 | ||
704a3143 | 182 | test_expect_success SYMLINKS 'detection should not be fooled by a symlink' ' |
68025633 JS |
183 | rm -fr foo.git && |
184 | git clone -s .git another && | |
185 | ln -s another yetanother && | |
fd3c32c9 JL |
186 | ( |
187 | cd yetanother/.git && | |
188 | git show -s HEAD | |
189 | ) | |
68025633 JS |
190 | ' |
191 | ||
c43ce6d6 | 192 | test_done |