Add more tests for git-clean
[git] / t / t7300-clean.sh
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
10 test_expect_success 'setup' '
11
12         mkdir -p src &&
13         touch src/part1.c Makefile &&
14         echo build >.gitignore &&
15         echo \*.o >>.gitignore &&
16         git add . &&
17         git-commit -m setup &&
18         touch src/part2.c README &&
19         git add .
20
21 '
22
23 test_expect_success 'git-clean' '
24
25         mkdir -p build docs &&
26         touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
27         git-clean &&
28         test -f Makefile &&
29         test -f README &&
30         test -f src/part1.c &&
31         test -f src/part2.c &&
32         test ! -f a.out &&
33         test ! -f src/part3.c &&
34         test -f docs/manual.txt &&
35         test -f obj.o &&
36         test -f build/lib.so
37
38 '
39
40 test_expect_success 'git-clean src/' '
41
42         mkdir -p build docs &&
43         touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
44         git-clean src/ &&
45         test -f Makefile &&
46         test -f README &&
47         test -f src/part1.c &&
48         test -f src/part2.c &&
49         test -f a.out &&
50         test ! -f src/part3.c &&
51         test -f docs/manual.txt &&
52         test -f obj.o &&
53         test -f build/lib.so
54
55 '
56
57 test_expect_success 'git-clean src/ src/' '
58
59         mkdir -p build docs &&
60         touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
61         git-clean src/ src/ &&
62         test -f Makefile &&
63         test -f README &&
64         test -f src/part1.c &&
65         test -f src/part2.c &&
66         test -f a.out &&
67         test ! -f src/part3.c &&
68         test -f docs/manual.txt &&
69         test -f obj.o &&
70         test -f build/lib.so
71
72 '
73
74 test_expect_success 'git-clean with prefix' '
75
76         mkdir -p build docs &&
77         touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
78         (cd src/ && git-clean) &&
79         test -f Makefile &&
80         test -f README &&
81         test -f src/part1.c &&
82         test -f src/part2.c &&
83         test -f a.out &&
84         test ! -f src/part3.c &&
85         test -f docs/manual.txt &&
86         test -f obj.o &&
87         test -f build/lib.so
88
89 '
90 test_expect_success 'git-clean -d with prefix and path' '
91
92         mkdir -p build docs src/feature &&
93         touch a.out src/part3.c src/feature/file.c docs/manual.txt obj.o build/lib.so &&
94         (cd src/ && git-clean -d feature/) &&
95         test -f Makefile &&
96         test -f README &&
97         test -f src/part1.c &&
98         test -f src/part2.c &&
99         test -f a.out &&
100         test -f src/part3.c &&
101         test ! -f src/feature/file.c &&
102         test -f docs/manual.txt &&
103         test -f obj.o &&
104         test -f build/lib.so
105
106 '
107
108 test_expect_success 'git-clean symbolic link' '
109
110         mkdir -p build docs &&
111         touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
112         ln -s docs/manual.txt src/part4.c
113         git-clean &&
114         test -f Makefile &&
115         test -f README &&
116         test -f src/part1.c &&
117         test -f src/part2.c &&
118         test ! -f a.out &&
119         test ! -f src/part3.c &&
120         test ! -f src/part4.c &&
121         test -f docs/manual.txt &&
122         test -f obj.o &&
123         test -f build/lib.so
124
125 '
126
127 test_expect_success 'git-clean -n' '
128
129         mkdir -p build docs &&
130         touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
131         git-clean -n &&
132         test -f Makefile &&
133         test -f README &&
134         test -f src/part1.c &&
135         test -f src/part2.c &&
136         test -f a.out &&
137         test -f src/part3.c &&
138         test -f docs/manual.txt &&
139         test -f obj.o &&
140         test -f build/lib.so
141
142 '
143
144 test_expect_success 'git-clean -d' '
145
146         mkdir -p build docs &&
147         touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
148         git-clean -d &&
149         test -f Makefile &&
150         test -f README &&
151         test -f src/part1.c &&
152         test -f src/part2.c &&
153         test ! -f a.out &&
154         test ! -f src/part3.c &&
155         test ! -d docs &&
156         test -f obj.o &&
157         test -f build/lib.so
158
159 '
160
161 test_expect_success 'git-clean -d src/ examples/' '
162
163         mkdir -p build docs examples &&
164         touch a.out src/part3.c docs/manual.txt obj.o build/lib.so examples/1.c &&
165         git-clean -d src/ examples/ &&
166         test -f Makefile &&
167         test -f README &&
168         test -f src/part1.c &&
169         test -f src/part2.c &&
170         test -f a.out &&
171         test ! -f src/part3.c &&
172         test ! -f examples/1.c &&
173         test -f docs/manual.txt &&
174         test -f obj.o &&
175         test -f build/lib.so
176
177 '
178
179 test_expect_success 'git-clean -x' '
180
181         mkdir -p build docs &&
182         touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
183         git-clean -x &&
184         test -f Makefile &&
185         test -f README &&
186         test -f src/part1.c &&
187         test -f src/part2.c &&
188         test ! -f a.out &&
189         test ! -f src/part3.c &&
190         test -f docs/manual.txt &&
191         test ! -f obj.o &&
192         test -f build/lib.so
193
194 '
195
196 test_expect_success 'git-clean -d -x' '
197
198         mkdir -p build docs &&
199         touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
200         git-clean -d -x &&
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 ! -d docs &&
208         test ! -f obj.o &&
209         test ! -d build
210
211 '
212
213 test_expect_success 'git-clean -X' '
214
215         mkdir -p build docs &&
216         touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
217         git-clean -X &&
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 -f docs/manual.txt &&
225         test ! -f obj.o &&
226         test -f build/lib.so
227
228 '
229
230 test_expect_success 'git-clean -d -X' '
231
232         mkdir -p build docs &&
233         touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
234         git-clean -d -X &&
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 docs/manual.txt &&
242         test ! -f obj.o &&
243         test ! -d build
244
245 '
246
247 test_expect_success 'clean.requireForce' '
248
249         git config clean.requireForce true &&
250         ! git-clean
251
252 '
253
254 test_expect_success 'clean.requireForce and -n' '
255
256         mkdir -p build docs &&
257         touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
258         git-clean -n &&
259         test -f Makefile &&
260         test -f README &&
261         test -f src/part1.c &&
262         test -f src/part2.c &&
263         test -f a.out &&
264         test -f src/part3.c &&
265         test -f docs/manual.txt &&
266         test -f obj.o &&
267         test -f build/lib.so
268
269 '
270
271 test_expect_success 'clean.requireForce and -f' '
272
273         git-clean -f &&
274         test -f README &&
275         test -f src/part1.c &&
276         test -f src/part2.c &&
277         test ! -f a.out &&
278         test ! -f src/part3.c &&
279         test -f docs/manual.txt &&
280         test -f obj.o &&
281         test -f build/lib.so
282
283 '
284
285 test_done