Merge branch 'bs/maint-t7005' into maint
[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 -n' '
41
42         mkdir -p build docs &&
43         touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
44         git-clean -n &&
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 -d' '
58
59         mkdir -p build docs &&
60         touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
61         git-clean -d &&
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 ! -d docs &&
69         test -f obj.o &&
70         test -f build/lib.so
71
72 '
73
74 test_expect_success 'git-clean -x' '
75
76         mkdir -p build docs &&
77         touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
78         git-clean -x &&
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
91 test_expect_success 'git-clean -d -x' '
92
93         mkdir -p build docs &&
94         touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
95         git-clean -d -x &&
96         test -f Makefile &&
97         test -f README &&
98         test -f src/part1.c &&
99         test -f src/part2.c &&
100         test ! -f a.out &&
101         test ! -f src/part3.c &&
102         test ! -d docs &&
103         test ! -f obj.o &&
104         test ! -d build
105
106 '
107
108 test_expect_success 'git-clean -X' '
109
110         mkdir -p build docs &&
111         touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
112         git-clean -X &&
113         test -f Makefile &&
114         test -f README &&
115         test -f src/part1.c &&
116         test -f src/part2.c &&
117         test -f a.out &&
118         test -f src/part3.c &&
119         test -f docs/manual.txt &&
120         test ! -f obj.o &&
121         test -f build/lib.so
122
123 '
124
125 test_expect_success 'git-clean -d -X' '
126
127         mkdir -p build docs &&
128         touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
129         git-clean -d -X &&
130         test -f Makefile &&
131         test -f README &&
132         test -f src/part1.c &&
133         test -f src/part2.c &&
134         test -f a.out &&
135         test -f src/part3.c &&
136         test -f docs/manual.txt &&
137         test ! -f obj.o &&
138         test ! -d build
139
140 '
141
142 test_expect_success 'clean.requireForce' '
143
144         git config clean.requireForce true &&
145         ! git-clean
146
147 '
148
149 test_expect_success 'clean.requireForce and -n' '
150
151         mkdir -p build docs &&
152         touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
153         git-clean -n &&
154         test -f Makefile &&
155         test -f README &&
156         test -f src/part1.c &&
157         test -f src/part2.c &&
158         test -f a.out &&
159         test -f src/part3.c &&
160         test -f docs/manual.txt &&
161         test -f obj.o &&
162         test -f build/lib.so
163
164 '
165
166 test_expect_success 'clean.requireForce and -f' '
167
168         git-clean -f &&
169         test -f README &&
170         test -f src/part1.c &&
171         test -f src/part2.c &&
172         test ! -f a.out &&
173         test ! -f src/part3.c &&
174         test -f docs/manual.txt &&
175         test -f obj.o &&
176         test -f build/lib.so
177
178 '
179
180 test_expect_success 'core.excludesfile' '
181
182         echo excludes >excludes &&
183         echo included >included &&
184         git config core.excludesfile excludes &&
185         output=$(git clean -n excludes included 2>&1) &&
186         expr "$output" : ".*included" >/dev/null &&
187         ! expr "$output" : ".*excludes" >/dev/null
188
189 '
190
191 test_done