]>
Commit | Line | Data |
---|---|---|
ec0e0f25 MS |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2007 Michael Spang | |
4 | # | |
5 | ||
6 | test_description='git-clean basic tests' | |
7 | ||
8 | . ./test-lib.sh | |
9 | ||
562ca192 JH |
10 | git config clean.requireForce no |
11 | ||
ec0e0f25 MS |
12 | test_expect_success 'setup' ' |
13 | ||
14 | mkdir -p src && | |
15 | touch src/part1.c Makefile && | |
16 | echo build >.gitignore && | |
17 | echo \*.o >>.gitignore && | |
5be60078 | 18 | git add . && |
ec0e0f25 MS |
19 | git-commit -m setup && |
20 | touch src/part2.c README && | |
5be60078 | 21 | git add . |
ec0e0f25 MS |
22 | |
23 | ' | |
24 | ||
25 | test_expect_success 'git-clean' ' | |
26 | ||
27 | mkdir -p build docs && | |
28 | touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && | |
29 | git-clean && | |
30 | test -f Makefile && | |
31 | test -f README && | |
32 | test -f src/part1.c && | |
33 | test -f src/part2.c && | |
34 | test ! -f a.out && | |
35 | test ! -f src/part3.c && | |
36 | test -f docs/manual.txt && | |
37 | test -f obj.o && | |
38 | test -f build/lib.so | |
39 | ||
40 | ' | |
41 | ||
ae3e76c2 SB |
42 | test_expect_success 'git-clean src/' ' |
43 | ||
44 | mkdir -p build docs && | |
45 | touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && | |
46 | git-clean src/ && | |
47 | test -f Makefile && | |
48 | test -f README && | |
49 | test -f src/part1.c && | |
50 | test -f src/part2.c && | |
51 | test -f a.out && | |
52 | test ! -f src/part3.c && | |
53 | test -f docs/manual.txt && | |
54 | test -f obj.o && | |
55 | test -f build/lib.so | |
56 | ||
57 | ' | |
58 | ||
59 | test_expect_success 'git-clean src/ src/' ' | |
60 | ||
61 | mkdir -p build docs && | |
62 | touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && | |
63 | git-clean src/ src/ && | |
64 | test -f Makefile && | |
65 | test -f README && | |
66 | test -f src/part1.c && | |
67 | test -f src/part2.c && | |
68 | test -f a.out && | |
69 | test ! -f src/part3.c && | |
70 | test -f docs/manual.txt && | |
71 | test -f obj.o && | |
72 | test -f build/lib.so | |
73 | ||
74 | ' | |
75 | ||
76 | test_expect_success 'git-clean with prefix' ' | |
77 | ||
2b6f0b0a SB |
78 | mkdir -p build docs src/test && |
79 | touch a.out src/part3.c docs/manual.txt obj.o build/lib.so src/test/1.c && | |
ae3e76c2 SB |
80 | (cd src/ && git-clean) && |
81 | test -f Makefile && | |
82 | test -f README && | |
83 | test -f src/part1.c && | |
84 | test -f src/part2.c && | |
85 | test -f a.out && | |
86 | test ! -f src/part3.c && | |
2b6f0b0a | 87 | test -f src/test/1.c && |
ae3e76c2 SB |
88 | test -f docs/manual.txt && |
89 | test -f obj.o && | |
90 | test -f build/lib.so | |
91 | ||
92 | ' | |
5b7570cf JH |
93 | |
94 | test_expect_success 'git-clean with relative prefix' ' | |
95 | ||
96 | mkdir -p build docs && | |
97 | touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && | |
98 | would_clean=$( | |
99 | cd docs && | |
100 | git clean -n ../src | | |
101 | sed -n -e "s|^Would remove ||p" | |
102 | ) && | |
103 | test "$would_clean" = ../src/part3.c || { | |
104 | echo "OOps <$would_clean>" | |
105 | false | |
106 | } | |
107 | ' | |
108 | ||
109 | test_expect_success 'git-clean with absolute path' ' | |
110 | ||
111 | mkdir -p build docs && | |
112 | touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && | |
113 | would_clean=$( | |
114 | cd docs && | |
115 | git clean -n $(pwd)/../src | | |
116 | sed -n -e "s|^Would remove ||p" | |
117 | ) && | |
118 | test "$would_clean" = ../src/part3.c || { | |
119 | echo "OOps <$would_clean>" | |
120 | false | |
121 | } | |
122 | ' | |
123 | ||
124 | test_expect_success 'git-clean with out of work tree relative path' ' | |
125 | ||
126 | mkdir -p build docs && | |
127 | touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && | |
128 | ( | |
129 | cd docs && | |
130 | test_must_fail git clean -n ../.. | |
131 | ) | |
132 | ' | |
133 | ||
134 | test_expect_success 'git-clean with out of work tree absolute path' ' | |
135 | ||
136 | mkdir -p build docs && | |
137 | touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && | |
138 | dd=$(cd .. && pwd) && | |
139 | ( | |
140 | cd docs && | |
141 | test_must_fail git clean -n $dd | |
142 | ) | |
143 | ' | |
144 | ||
ae3e76c2 SB |
145 | test_expect_success 'git-clean -d with prefix and path' ' |
146 | ||
147 | mkdir -p build docs src/feature && | |
148 | touch a.out src/part3.c src/feature/file.c docs/manual.txt obj.o build/lib.so && | |
149 | (cd src/ && git-clean -d feature/) && | |
150 | test -f Makefile && | |
151 | test -f README && | |
152 | test -f src/part1.c && | |
153 | test -f src/part2.c && | |
154 | test -f a.out && | |
155 | test -f src/part3.c && | |
156 | test ! -f src/feature/file.c && | |
157 | test -f docs/manual.txt && | |
158 | test -f obj.o && | |
159 | test -f build/lib.so | |
160 | ||
161 | ' | |
162 | ||
163 | test_expect_success 'git-clean symbolic link' ' | |
164 | ||
165 | mkdir -p build docs && | |
166 | touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && | |
167 | ln -s docs/manual.txt src/part4.c | |
168 | git-clean && | |
169 | test -f Makefile && | |
170 | test -f README && | |
171 | test -f src/part1.c && | |
172 | test -f src/part2.c && | |
173 | test ! -f a.out && | |
174 | test ! -f src/part3.c && | |
175 | test ! -f src/part4.c && | |
176 | test -f docs/manual.txt && | |
177 | test -f obj.o && | |
178 | test -f build/lib.so | |
179 | ||
180 | ' | |
181 | ||
d3357ab8 JK |
182 | test_expect_success 'git-clean with wildcard' ' |
183 | ||
184 | touch a.clean b.clean other.c && | |
185 | git-clean "*.clean" && | |
186 | test -f Makefile && | |
187 | test -f README && | |
188 | test -f src/part1.c && | |
189 | test -f src/part2.c && | |
190 | test ! -f a.clean && | |
191 | test ! -f b.clean && | |
192 | test -f other.c | |
193 | ||
194 | ' | |
195 | ||
ec0e0f25 MS |
196 | test_expect_success 'git-clean -n' ' |
197 | ||
198 | mkdir -p build docs && | |
199 | touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && | |
200 | git-clean -n && | |
201 | test -f Makefile && | |
202 | test -f README && | |
203 | test -f src/part1.c && | |
204 | test -f src/part2.c && | |
205 | test -f a.out && | |
206 | test -f src/part3.c && | |
207 | test -f docs/manual.txt && | |
208 | test -f obj.o && | |
209 | test -f build/lib.so | |
210 | ||
211 | ' | |
212 | ||
213 | test_expect_success 'git-clean -d' ' | |
214 | ||
215 | mkdir -p build docs && | |
216 | touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && | |
217 | git-clean -d && | |
218 | test -f Makefile && | |
219 | test -f README && | |
220 | test -f src/part1.c && | |
221 | test -f src/part2.c && | |
222 | test ! -f a.out && | |
223 | test ! -f src/part3.c && | |
224 | test ! -d docs && | |
225 | test -f obj.o && | |
226 | test -f build/lib.so | |
227 | ||
228 | ' | |
229 | ||
ae3e76c2 SB |
230 | test_expect_success 'git-clean -d src/ examples/' ' |
231 | ||
232 | mkdir -p build docs examples && | |
233 | touch a.out src/part3.c docs/manual.txt obj.o build/lib.so examples/1.c && | |
234 | git-clean -d src/ examples/ && | |
235 | test -f Makefile && | |
236 | test -f README && | |
237 | test -f src/part1.c && | |
238 | test -f src/part2.c && | |
239 | test -f a.out && | |
240 | test ! -f src/part3.c && | |
241 | test ! -f examples/1.c && | |
242 | test -f docs/manual.txt && | |
243 | test -f obj.o && | |
244 | test -f build/lib.so | |
245 | ||
246 | ' | |
247 | ||
ec0e0f25 MS |
248 | test_expect_success 'git-clean -x' ' |
249 | ||
250 | mkdir -p build docs && | |
251 | touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && | |
252 | git-clean -x && | |
253 | test -f Makefile && | |
254 | test -f README && | |
255 | test -f src/part1.c && | |
256 | test -f src/part2.c && | |
257 | test ! -f a.out && | |
258 | test ! -f src/part3.c && | |
259 | test -f docs/manual.txt && | |
260 | test ! -f obj.o && | |
261 | test -f build/lib.so | |
262 | ||
263 | ' | |
264 | ||
265 | test_expect_success 'git-clean -d -x' ' | |
266 | ||
267 | mkdir -p build docs && | |
268 | touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && | |
269 | git-clean -d -x && | |
270 | test -f Makefile && | |
271 | test -f README && | |
272 | test -f src/part1.c && | |
273 | test -f src/part2.c && | |
274 | test ! -f a.out && | |
275 | test ! -f src/part3.c && | |
276 | test ! -d docs && | |
277 | test ! -f obj.o && | |
278 | test ! -d build | |
279 | ||
280 | ' | |
281 | ||
282 | test_expect_success 'git-clean -X' ' | |
283 | ||
284 | mkdir -p build docs && | |
285 | touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && | |
286 | git-clean -X && | |
287 | test -f Makefile && | |
288 | test -f README && | |
289 | test -f src/part1.c && | |
290 | test -f src/part2.c && | |
291 | test -f a.out && | |
292 | test -f src/part3.c && | |
293 | test -f docs/manual.txt && | |
294 | test ! -f obj.o && | |
295 | test -f build/lib.so | |
296 | ||
297 | ' | |
298 | ||
299 | test_expect_success 'git-clean -d -X' ' | |
300 | ||
301 | mkdir -p build docs && | |
302 | touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && | |
303 | git-clean -d -X && | |
304 | test -f Makefile && | |
305 | test -f README && | |
306 | test -f src/part1.c && | |
307 | test -f src/part2.c && | |
308 | test -f a.out && | |
309 | test -f src/part3.c && | |
310 | test -f docs/manual.txt && | |
311 | test ! -f obj.o && | |
312 | test ! -d build | |
313 | ||
314 | ' | |
315 | ||
562ca192 JH |
316 | test_expect_success 'clean.requireForce defaults to true' ' |
317 | ||
318 | git config --unset clean.requireForce && | |
319 | ! git-clean | |
320 | ||
321 | ' | |
322 | ||
ec0e0f25 MS |
323 | test_expect_success 'clean.requireForce' ' |
324 | ||
5be60078 | 325 | git config clean.requireForce true && |
ec0e0f25 MS |
326 | ! git-clean |
327 | ||
328 | ' | |
329 | ||
330 | test_expect_success 'clean.requireForce and -n' ' | |
331 | ||
332 | mkdir -p build docs && | |
333 | touch a.out src/part3.c docs/manual.txt obj.o build/lib.so && | |
334 | git-clean -n && | |
335 | test -f Makefile && | |
336 | test -f README && | |
337 | test -f src/part1.c && | |
338 | test -f src/part2.c && | |
339 | test -f a.out && | |
340 | test -f src/part3.c && | |
341 | test -f docs/manual.txt && | |
342 | test -f obj.o && | |
343 | test -f build/lib.so | |
344 | ||
345 | ' | |
346 | ||
347 | test_expect_success 'clean.requireForce and -f' ' | |
348 | ||
349 | git-clean -f && | |
350 | test -f README && | |
351 | test -f src/part1.c && | |
352 | test -f src/part2.c && | |
353 | test ! -f a.out && | |
354 | test ! -f src/part3.c && | |
355 | test -f docs/manual.txt && | |
356 | test -f obj.o && | |
357 | test -f build/lib.so | |
358 | ||
359 | ' | |
360 | ||
b57321f5 JH |
361 | test_expect_success 'core.excludesfile' ' |
362 | ||
363 | echo excludes >excludes && | |
364 | echo included >included && | |
365 | git config core.excludesfile excludes && | |
366 | output=$(git clean -n excludes included 2>&1) && | |
367 | expr "$output" : ".*included" >/dev/null && | |
368 | ! expr "$output" : ".*excludes" >/dev/null | |
369 | ||
370 | ' | |
371 | ||
aa9c83c2 MV |
372 | test_expect_success 'removal failure' ' |
373 | ||
374 | mkdir foo && | |
375 | touch foo/bar && | |
a798b2c0 | 376 | exec <foo/bar && |
aa9c83c2 | 377 | chmod 0 foo && |
a798b2c0 | 378 | test_must_fail git clean -f -d |
aa9c83c2 MV |
379 | |
380 | ' | |
381 | chmod 755 foo | |
382 | ||
ec0e0f25 | 383 | test_done |