]> Pileus Git - ~andy/git/blob - t/t0030-stripspace.sh
t0030: Remove repeated instructions and add missing &&
[~andy/git] / t / t0030-stripspace.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2007 Carlos Rica
4 #
5
6 test_description='git stripspace'
7
8 . ./test-lib.sh
9
10 t40='A quick brown fox jumps over the lazy do'
11 s40='                                        '
12 sss="$s40$s40$s40$s40$s40$s40$s40$s40$s40$s40" # 400
13 ttt="$t40$t40$t40$t40$t40$t40$t40$t40$t40$t40" # 400
14
15 test_expect_success \
16     'long lines without spaces should be unchanged' '
17     echo "$ttt" >expect &&
18     git stripspace <expect >actual &&
19     git diff expect actual &&
20
21     echo "$ttt$ttt" >expect &&
22     git stripspace <expect >actual &&
23     git diff expect actual &&
24
25     echo "$ttt$ttt$ttt" >expect &&
26     git stripspace <expect >actual &&
27     git diff expect actual &&
28
29     echo "$ttt$ttt$ttt$ttt" >expect &&
30     git stripspace <expect >actual &&
31     git diff expect actual
32 '
33
34 test_expect_success \
35     'lines with spaces at the beginning should be unchanged' '
36     echo "$sss$ttt" >expect &&
37     git stripspace <expect >actual &&
38     git diff expect actual &&
39
40     echo "$sss$sss$ttt" >expect &&
41     git stripspace <expect >actual &&
42     git diff expect actual &&
43
44     echo "$sss$sss$sss$ttt" >expect &&
45     git stripspace <expect >actual &&
46     git diff expect actual
47 '
48
49 test_expect_success \
50     'lines with intermediate spaces should be unchanged' '
51     echo "$ttt$sss$ttt" >expect &&
52     git stripspace <expect >actual &&
53     git diff expect actual &&
54
55     echo "$ttt$sss$sss$ttt" >expect &&
56     git stripspace <expect >actual &&
57     git diff expect actual
58 '
59
60 test_expect_success \
61     'consecutive blank lines should be unified' '
62     printf "$ttt\n\n$ttt\n" > expect &&
63     printf "$ttt\n\n\n\n\n$ttt\n" | git stripspace >actual &&
64     git diff expect actual &&
65
66     printf "$ttt$ttt\n\n$ttt\n" > expect &&
67     printf "$ttt$ttt\n\n\n\n\n$ttt\n" | git stripspace >actual &&
68     git diff expect actual &&
69
70     printf "$ttt$ttt$ttt\n\n$ttt\n" > expect &&
71     printf "$ttt$ttt$ttt\n\n\n\n\n$ttt\n" | git stripspace >actual &&
72     git diff expect actual &&
73
74     printf "$ttt\n\n$ttt\n" > expect &&
75     printf "$ttt\n\n\n\n\n$ttt\n" | git stripspace >actual &&
76     git diff expect actual &&
77
78     printf "$ttt\n\n$ttt$ttt\n" > expect &&
79     printf "$ttt\n\n\n\n\n$ttt$ttt\n" | git stripspace >actual &&
80     git diff expect actual &&
81
82     printf "$ttt\n\n$ttt$ttt$ttt\n" > expect &&
83     printf "$ttt\n\n\n\n\n$ttt$ttt$ttt\n" | git stripspace >actual &&
84     git diff expect actual
85 '
86
87 test_expect_success \
88     'only consecutive blank lines should be completely removed' '
89     > expect &&
90
91     printf "\n" | git stripspace >actual &&
92     git diff expect actual &&
93
94     printf "\n\n\n" | git stripspace >actual &&
95     git diff expect actual &&
96
97     printf "$sss\n$sss\n$sss\n" | git stripspace >actual &&
98     git diff expect actual &&
99
100     printf "$sss$sss\n$sss\n\n" | git stripspace >actual &&
101     git diff expect actual &&
102
103     printf "\n$sss\n$sss$sss\n" | git stripspace >actual &&
104     git diff expect actual &&
105
106     printf "$sss$sss$sss$sss\n\n\n" | git stripspace >actual &&
107     git diff expect actual &&
108
109     printf "\n$sss$sss$sss$sss\n\n" | git stripspace >actual &&
110     git diff expect actual &&
111
112     printf "\n\n$sss$sss$sss$sss\n" | git stripspace >actual &&
113     git diff expect actual
114 '
115
116 test_expect_success \
117     'consecutive blank lines at the beginning should be removed' '
118     printf "$ttt\n" > expect &&
119     printf "\n$ttt\n" | git stripspace >actual &&
120     git diff expect actual &&
121
122     printf "$ttt\n" > expect &&
123     printf "\n\n\n$ttt\n" | git stripspace >actual &&
124     git diff expect actual &&
125
126     printf "$ttt$ttt\n" > expect &&
127     printf "\n\n\n$ttt$ttt\n" | git stripspace >actual &&
128     git diff expect actual &&
129
130     printf "$ttt$ttt$ttt\n" > expect &&
131     printf "\n\n\n$ttt$ttt$ttt\n" | git stripspace >actual &&
132     git diff expect actual &&
133
134     printf "$ttt$ttt$ttt$ttt\n" > expect &&
135     printf "\n\n\n$ttt$ttt$ttt$ttt\n" | git stripspace >actual &&
136     git diff expect actual &&
137
138     printf "$ttt\n" > expect &&
139
140     printf "$sss\n$sss\n$sss\n$ttt\n" | git stripspace >actual &&
141     git diff expect actual &&
142
143     printf "\n$sss\n$sss$sss\n$ttt\n" | git stripspace >actual &&
144     git diff expect actual &&
145
146     printf "$sss$sss\n$sss\n\n$ttt\n" | git stripspace >actual &&
147     git diff expect actual &&
148
149     printf "$sss$sss$sss\n\n\n$ttt\n" | git stripspace >actual &&
150     git diff expect actual &&
151
152     printf "\n$sss$sss$sss\n\n$ttt\n" | git stripspace >actual &&
153     git diff expect actual &&
154
155     printf "\n\n$sss$sss$sss\n$ttt\n" | git stripspace >actual &&
156     git diff expect actual
157 '
158
159 test_expect_success \
160     'consecutive blank lines at the end should be removed' '
161     printf "$ttt\n" > expect &&
162     printf "$ttt\n\n" | git stripspace >actual &&
163     git diff expect actual &&
164
165     printf "$ttt\n" > expect &&
166     printf "$ttt\n\n\n\n" | git stripspace >actual &&
167     git diff expect actual &&
168
169     printf "$ttt$ttt\n" > expect &&
170     printf "$ttt$ttt\n\n\n\n" | git stripspace >actual &&
171     git diff expect actual &&
172
173     printf "$ttt$ttt$ttt\n" > expect &&
174     printf "$ttt$ttt$ttt\n\n\n\n" | git stripspace >actual &&
175     git diff expect actual &&
176
177     printf "$ttt$ttt$ttt$ttt\n" > expect &&
178     printf "$ttt$ttt$ttt$ttt\n\n\n\n" | git stripspace >actual &&
179     git diff expect actual &&
180
181     printf "$ttt\n" > expect &&
182
183     printf "$ttt\n$sss\n$sss\n$sss\n" | git stripspace >actual &&
184     git diff expect actual &&
185
186     printf "$ttt\n\n$sss\n$sss$sss\n" | git stripspace >actual &&
187     git diff expect actual &&
188
189     printf "$ttt\n$sss$sss\n$sss\n\n" | git stripspace >actual &&
190     git diff expect actual &&
191
192     printf "$ttt\n$sss$sss$sss\n\n\n" | git stripspace >actual &&
193     git diff expect actual &&
194
195     printf "$ttt\n\n$sss$sss$sss\n\n" | git stripspace >actual &&
196     git diff expect actual &&
197
198     printf "$ttt\n\n\n$sss$sss$sss\n" | git stripspace >actual &&
199     git diff expect actual
200 '
201
202 test_expect_success \
203     'text without newline at end should end with newline' '
204     test `printf "$ttt" | git stripspace | wc -l` -gt 0 &&
205     test `printf "$ttt$ttt" | git stripspace | wc -l` -gt 0 &&
206     test `printf "$ttt$ttt$ttt" | git stripspace | wc -l` -gt 0 &&
207     test `printf "$ttt$ttt$ttt$ttt" | git stripspace | wc -l` -gt 0
208 '
209
210 # text plus spaces at the end:
211
212 test_expect_success \
213     'text plus spaces without newline at end should end with newline' '
214     test `printf "$ttt$sss" | git stripspace | wc -l` -gt 0 &&
215     test `printf "$ttt$ttt$sss" | git stripspace | wc -l` -gt 0 &&
216     test `printf "$ttt$ttt$ttt$sss" | git stripspace | wc -l` -gt 0 &&
217     test `printf "$ttt$sss$sss" | git stripspace | wc -l` -gt 0 &&
218     test `printf "$ttt$ttt$sss$sss" | git stripspace | wc -l` -gt 0 &&
219     test `printf "$ttt$sss$sss$sss" | git stripspace | wc -l` -gt 0
220 '
221
222 test_expect_failure \
223     'text plus spaces without newline at end should not show spaces' '
224     printf "$ttt$sss" | git stripspace | grep -q "  " ||
225     printf "$ttt$ttt$sss" | git stripspace | grep -q "  " ||
226     printf "$ttt$ttt$ttt$sss" | git stripspace | grep -q "  " ||
227     printf "$ttt$sss$sss" | git stripspace | grep -q "  " ||
228     printf "$ttt$ttt$sss$sss" | git stripspace | grep -q "  " ||
229     printf "$ttt$sss$sss$sss" | git stripspace | grep -q "  "
230 '
231
232 test_expect_success \
233     'text plus spaces without newline should show the correct lines' '
234     printf "$ttt\n" >expect &&
235     printf "$ttt$sss" | git stripspace >actual &&
236     git diff expect actual &&
237
238     printf "$ttt\n" >expect &&
239     printf "$ttt$sss$sss" | git stripspace >actual &&
240     git diff expect actual &&
241
242     printf "$ttt\n" >expect &&
243     printf "$ttt$sss$sss$sss" | git stripspace >actual &&
244     git diff expect actual &&
245
246     printf "$ttt$ttt\n" >expect &&
247     printf "$ttt$ttt$sss" | git stripspace >actual &&
248     git diff expect actual &&
249
250     printf "$ttt$ttt\n" >expect &&
251     printf "$ttt$ttt$sss$sss" | git stripspace >actual &&
252     git diff expect actual &&
253
254     printf "$ttt$ttt$ttt\n" >expect &&
255     printf "$ttt$ttt$ttt$sss" | git stripspace >actual &&
256     git diff expect actual
257 '
258
259 test_expect_failure \
260     'text plus spaces at end should not show spaces' '
261     echo "$ttt$sss" | git stripspace | grep -q "  " ||
262     echo "$ttt$ttt$sss" | git stripspace | grep -q "  " ||
263     echo "$ttt$ttt$ttt$sss" | git stripspace | grep -q "  " ||
264     echo "$ttt$sss$sss" | git stripspace | grep -q "  " ||
265     echo "$ttt$ttt$sss$sss" | git stripspace | grep -q "  " ||
266     echo "$ttt$sss$sss$sss" | git stripspace | grep -q "  "
267 '
268
269 test_expect_success \
270     'text plus spaces at end should be cleaned and newline must remain' '
271     echo "$ttt" >expect &&
272     echo "$ttt$sss" | git stripspace >actual &&
273     git diff expect actual &&
274
275     echo "$ttt" >expect &&
276     echo "$ttt$sss$sss" | git stripspace >actual &&
277     git diff expect actual &&
278
279     echo "$ttt" >expect &&
280     echo "$ttt$sss$sss$sss" | git stripspace >actual &&
281     git diff expect actual &&
282
283     echo "$ttt$ttt" >expect &&
284     echo "$ttt$ttt$sss" | git stripspace >actual &&
285     git diff expect actual &&
286
287     echo "$ttt$ttt" >expect &&
288     echo "$ttt$ttt$sss$sss" | git stripspace >actual &&
289     git diff expect actual &&
290
291     echo "$ttt$ttt$ttt" >expect &&
292     echo "$ttt$ttt$ttt$sss" | git stripspace >actual &&
293     git diff expect actual
294 '
295
296 # spaces only:
297
298 test_expect_success \
299     'spaces with newline at end should be replaced with empty string' '
300     printf "" >expect &&
301
302     echo | git stripspace >actual &&
303     git diff expect actual &&
304
305     echo "$sss" | git stripspace >actual &&
306     git diff expect actual &&
307
308     echo "$sss$sss" | git stripspace >actual &&
309     git diff expect actual &&
310
311     echo "$sss$sss$sss" | git stripspace >actual &&
312     git diff expect actual &&
313
314     echo "$sss$sss$sss$sss" | git stripspace >actual &&
315     git diff expect actual
316 '
317
318 test_expect_failure \
319     'spaces without newline at end should not show spaces' '
320     printf "" | git stripspace | grep -q " " ||
321     printf "$sss" | git stripspace | grep -q " " ||
322     printf "$sss$sss" | git stripspace | grep -q " " ||
323     printf "$sss$sss$sss" | git stripspace | grep -q " " ||
324     printf "$sss$sss$sss$sss" | git stripspace | grep -q " "
325 '
326
327 test_expect_success \
328     'spaces without newline at end should be replaced with empty string' '
329     printf "" >expect &&
330
331     printf "" | git stripspace >actual &&
332     git diff expect actual &&
333
334     printf "$sss$sss" | git stripspace >actual &&
335     git diff expect actual &&
336
337     printf "$sss$sss$sss" | git stripspace >actual &&
338     git diff expect actual &&
339
340     printf "$sss$sss$sss$sss" | git stripspace >actual &&
341     git diff expect actual
342 '
343
344 test_done