Code

Merge branch 'maint'
[git.git] / t / t0030-stripspace.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2007 Carlos Rica
4 #
6 test_description='git stripspace'
8 . ./test-lib.sh
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
15 test_expect_success \
16     'long lines without spaces should be unchanged' '
17     echo "$ttt" >expect &&
18     git stripspace <expect >actual &&
19     test_cmp expect actual &&
21     echo "$ttt$ttt" >expect &&
22     git stripspace <expect >actual &&
23     test_cmp expect actual &&
25     echo "$ttt$ttt$ttt" >expect &&
26     git stripspace <expect >actual &&
27     test_cmp expect actual &&
29     echo "$ttt$ttt$ttt$ttt" >expect &&
30     git stripspace <expect >actual &&
31     test_cmp expect actual
32 '
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     test_cmp expect actual &&
40     echo "$sss$sss$ttt" >expect &&
41     git stripspace <expect >actual &&
42     test_cmp expect actual &&
44     echo "$sss$sss$sss$ttt" >expect &&
45     git stripspace <expect >actual &&
46     test_cmp expect actual
47 '
49 test_expect_success \
50     'lines with intermediate spaces should be unchanged' '
51     echo "$ttt$sss$ttt" >expect &&
52     git stripspace <expect >actual &&
53     test_cmp expect actual &&
55     echo "$ttt$sss$sss$ttt" >expect &&
56     git stripspace <expect >actual &&
57     test_cmp expect actual
58 '
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     test_cmp expect actual &&
66     printf "$ttt$ttt\n\n$ttt\n" > expect &&
67     printf "$ttt$ttt\n\n\n\n\n$ttt\n" | git stripspace >actual &&
68     test_cmp expect actual &&
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     test_cmp expect actual &&
74     printf "$ttt\n\n$ttt\n" > expect &&
75     printf "$ttt\n\n\n\n\n$ttt\n" | git stripspace >actual &&
76     test_cmp expect actual &&
78     printf "$ttt\n\n$ttt$ttt\n" > expect &&
79     printf "$ttt\n\n\n\n\n$ttt$ttt\n" | git stripspace >actual &&
80     test_cmp expect actual &&
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     test_cmp expect actual &&
86     printf "$ttt\n\n$ttt\n" > expect &&
87     printf "$ttt\n\t\n \n\n  \t\t\n$ttt\n" | git stripspace >actual &&
88     test_cmp expect actual &&
90     printf "$ttt$ttt\n\n$ttt\n" > expect &&
91     printf "$ttt$ttt\n\t\n \n\n  \t\t\n$ttt\n" | git stripspace >actual &&
92     test_cmp expect actual &&
94     printf "$ttt$ttt$ttt\n\n$ttt\n" > expect &&
95     printf "$ttt$ttt$ttt\n\t\n \n\n  \t\t\n$ttt\n" | git stripspace >actual &&
96     test_cmp expect actual &&
98     printf "$ttt\n\n$ttt\n" > expect &&
99     printf "$ttt\n\t\n \n\n  \t\t\n$ttt\n" | git stripspace >actual &&
100     test_cmp expect actual &&
102     printf "$ttt\n\n$ttt$ttt\n" > expect &&
103     printf "$ttt\n\t\n \n\n  \t\t\n$ttt$ttt\n" | git stripspace >actual &&
104     test_cmp expect actual &&
106     printf "$ttt\n\n$ttt$ttt$ttt\n" > expect &&
107     printf "$ttt\n\t\n \n\n  \t\t\n$ttt$ttt$ttt\n" | git stripspace >actual &&
108     test_cmp expect actual
111 test_expect_success \
112     'only consecutive blank lines should be completely removed' '
113     > expect &&
115     printf "\n" | git stripspace >actual &&
116     test_cmp expect actual &&
118     printf "\n\n\n" | git stripspace >actual &&
119     test_cmp expect actual &&
121     printf "$sss\n$sss\n$sss\n" | git stripspace >actual &&
122     test_cmp expect actual &&
124     printf "$sss$sss\n$sss\n\n" | git stripspace >actual &&
125     test_cmp expect actual &&
127     printf "\n$sss\n$sss$sss\n" | git stripspace >actual &&
128     test_cmp expect actual &&
130     printf "$sss$sss$sss$sss\n\n\n" | git stripspace >actual &&
131     test_cmp expect actual &&
133     printf "\n$sss$sss$sss$sss\n\n" | git stripspace >actual &&
134     test_cmp expect actual &&
136     printf "\n\n$sss$sss$sss$sss\n" | git stripspace >actual &&
137     test_cmp expect actual
140 test_expect_success \
141     'consecutive blank lines at the beginning should be removed' '
142     printf "$ttt\n" > expect &&
143     printf "\n$ttt\n" | git stripspace >actual &&
144     test_cmp expect actual &&
146     printf "$ttt\n" > expect &&
147     printf "\n\n\n$ttt\n" | git stripspace >actual &&
148     test_cmp expect actual &&
150     printf "$ttt$ttt\n" > expect &&
151     printf "\n\n\n$ttt$ttt\n" | git stripspace >actual &&
152     test_cmp expect actual &&
154     printf "$ttt$ttt$ttt\n" > expect &&
155     printf "\n\n\n$ttt$ttt$ttt\n" | git stripspace >actual &&
156     test_cmp expect actual &&
158     printf "$ttt$ttt$ttt$ttt\n" > expect &&
159     printf "\n\n\n$ttt$ttt$ttt$ttt\n" | git stripspace >actual &&
160     test_cmp expect actual &&
162     printf "$ttt\n" > expect &&
164     printf "$sss\n$sss\n$sss\n$ttt\n" | git stripspace >actual &&
165     test_cmp expect actual &&
167     printf "\n$sss\n$sss$sss\n$ttt\n" | git stripspace >actual &&
168     test_cmp expect actual &&
170     printf "$sss$sss\n$sss\n\n$ttt\n" | git stripspace >actual &&
171     test_cmp expect actual &&
173     printf "$sss$sss$sss\n\n\n$ttt\n" | git stripspace >actual &&
174     test_cmp expect actual &&
176     printf "\n$sss$sss$sss\n\n$ttt\n" | git stripspace >actual &&
177     test_cmp expect actual &&
179     printf "\n\n$sss$sss$sss\n$ttt\n" | git stripspace >actual &&
180     test_cmp expect actual
183 test_expect_success \
184     'consecutive blank lines at the end should be removed' '
185     printf "$ttt\n" > expect &&
186     printf "$ttt\n\n" | git stripspace >actual &&
187     test_cmp expect actual &&
189     printf "$ttt\n" > expect &&
190     printf "$ttt\n\n\n\n" | git stripspace >actual &&
191     test_cmp expect actual &&
193     printf "$ttt$ttt\n" > expect &&
194     printf "$ttt$ttt\n\n\n\n" | git stripspace >actual &&
195     test_cmp expect actual &&
197     printf "$ttt$ttt$ttt\n" > expect &&
198     printf "$ttt$ttt$ttt\n\n\n\n" | git stripspace >actual &&
199     test_cmp expect actual &&
201     printf "$ttt$ttt$ttt$ttt\n" > expect &&
202     printf "$ttt$ttt$ttt$ttt\n\n\n\n" | git stripspace >actual &&
203     test_cmp expect actual &&
205     printf "$ttt\n" > expect &&
207     printf "$ttt\n$sss\n$sss\n$sss\n" | git stripspace >actual &&
208     test_cmp expect actual &&
210     printf "$ttt\n\n$sss\n$sss$sss\n" | git stripspace >actual &&
211     test_cmp expect actual &&
213     printf "$ttt\n$sss$sss\n$sss\n\n" | git stripspace >actual &&
214     test_cmp expect actual &&
216     printf "$ttt\n$sss$sss$sss\n\n\n" | git stripspace >actual &&
217     test_cmp expect actual &&
219     printf "$ttt\n\n$sss$sss$sss\n\n" | git stripspace >actual &&
220     test_cmp expect actual &&
222     printf "$ttt\n\n\n$sss$sss$sss\n" | git stripspace >actual &&
223     test_cmp expect actual
226 test_expect_success \
227     'text without newline at end should end with newline' '
228     test `printf "$ttt" | git stripspace | wc -l` -gt 0 &&
229     test `printf "$ttt$ttt" | git stripspace | wc -l` -gt 0 &&
230     test `printf "$ttt$ttt$ttt" | git stripspace | wc -l` -gt 0 &&
231     test `printf "$ttt$ttt$ttt$ttt" | git stripspace | wc -l` -gt 0
234 # text plus spaces at the end:
236 test_expect_success \
237     'text plus spaces without newline at end should end with newline' '
238     test `printf "$ttt$sss" | git stripspace | wc -l` -gt 0 &&
239     test `printf "$ttt$ttt$sss" | git stripspace | wc -l` -gt 0 &&
240     test `printf "$ttt$ttt$ttt$sss" | git stripspace | wc -l` -gt 0 &&
241     test `printf "$ttt$sss$sss" | git stripspace | wc -l` -gt 0 &&
242     test `printf "$ttt$ttt$sss$sss" | git stripspace | wc -l` -gt 0 &&
243     test `printf "$ttt$sss$sss$sss" | git stripspace | wc -l` -gt 0
246 test_expect_success \
247     'text plus spaces without newline at end should not show spaces' '
248     ! (printf "$ttt$sss" | git stripspace | grep "  " >/dev/null) &&
249     ! (printf "$ttt$ttt$sss" | git stripspace | grep "  " >/dev/null) &&
250     ! (printf "$ttt$ttt$ttt$sss" | git stripspace | grep "  " >/dev/null) &&
251     ! (printf "$ttt$sss$sss" | git stripspace | grep "  " >/dev/null) &&
252     ! (printf "$ttt$ttt$sss$sss" | git stripspace | grep "  " >/dev/null) &&
253     ! (printf "$ttt$sss$sss$sss" | git stripspace | grep "  " >/dev/null)
256 test_expect_success \
257     'text plus spaces without newline should show the correct lines' '
258     printf "$ttt\n" >expect &&
259     printf "$ttt$sss" | git stripspace >actual &&
260     test_cmp expect actual &&
262     printf "$ttt\n" >expect &&
263     printf "$ttt$sss$sss" | git stripspace >actual &&
264     test_cmp expect actual &&
266     printf "$ttt\n" >expect &&
267     printf "$ttt$sss$sss$sss" | git stripspace >actual &&
268     test_cmp expect actual &&
270     printf "$ttt$ttt\n" >expect &&
271     printf "$ttt$ttt$sss" | git stripspace >actual &&
272     test_cmp expect actual &&
274     printf "$ttt$ttt\n" >expect &&
275     printf "$ttt$ttt$sss$sss" | git stripspace >actual &&
276     test_cmp expect actual &&
278     printf "$ttt$ttt$ttt\n" >expect &&
279     printf "$ttt$ttt$ttt$sss" | git stripspace >actual &&
280     test_cmp expect actual
283 test_expect_success \
284     'text plus spaces at end should not show spaces' '
285     ! (echo "$ttt$sss" | git stripspace | grep "  " >/dev/null) &&
286     ! (echo "$ttt$ttt$sss" | git stripspace | grep "  " >/dev/null) &&
287     ! (echo "$ttt$ttt$ttt$sss" | git stripspace | grep "  " >/dev/null) &&
288     ! (echo "$ttt$sss$sss" | git stripspace | grep "  " >/dev/null) &&
289     ! (echo "$ttt$ttt$sss$sss" | git stripspace | grep "  " >/dev/null) &&
290     ! (echo "$ttt$sss$sss$sss" | git stripspace | grep "  " >/dev/null)
293 test_expect_success \
294     'text plus spaces at end should be cleaned and newline must remain' '
295     echo "$ttt" >expect &&
296     echo "$ttt$sss" | git stripspace >actual &&
297     test_cmp expect actual &&
299     echo "$ttt" >expect &&
300     echo "$ttt$sss$sss" | git stripspace >actual &&
301     test_cmp expect actual &&
303     echo "$ttt" >expect &&
304     echo "$ttt$sss$sss$sss" | git stripspace >actual &&
305     test_cmp expect actual &&
307     echo "$ttt$ttt" >expect &&
308     echo "$ttt$ttt$sss" | git stripspace >actual &&
309     test_cmp expect actual &&
311     echo "$ttt$ttt" >expect &&
312     echo "$ttt$ttt$sss$sss" | git stripspace >actual &&
313     test_cmp expect actual &&
315     echo "$ttt$ttt$ttt" >expect &&
316     echo "$ttt$ttt$ttt$sss" | git stripspace >actual &&
317     test_cmp expect actual
320 # spaces only:
322 test_expect_success \
323     'spaces with newline at end should be replaced with empty string' '
324     printf "" >expect &&
326     echo | git stripspace >actual &&
327     test_cmp expect actual &&
329     echo "$sss" | git stripspace >actual &&
330     test_cmp expect actual &&
332     echo "$sss$sss" | git stripspace >actual &&
333     test_cmp expect actual &&
335     echo "$sss$sss$sss" | git stripspace >actual &&
336     test_cmp expect actual &&
338     echo "$sss$sss$sss$sss" | git stripspace >actual &&
339     test_cmp expect actual
342 test_expect_success \
343     'spaces without newline at end should not show spaces' '
344     ! (printf "" | git stripspace | grep " " >/dev/null) &&
345     ! (printf "$sss" | git stripspace | grep " " >/dev/null) &&
346     ! (printf "$sss$sss" | git stripspace | grep " " >/dev/null) &&
347     ! (printf "$sss$sss$sss" | git stripspace | grep " " >/dev/null) &&
348     ! (printf "$sss$sss$sss$sss" | git stripspace | grep " " >/dev/null)
351 test_expect_success \
352     'spaces without newline at end should be replaced with empty string' '
353     printf "" >expect &&
355     printf "" | git stripspace >actual &&
356     test_cmp expect actual &&
358     printf "$sss$sss" | git stripspace >actual &&
359     test_cmp expect actual &&
361     printf "$sss$sss$sss" | git stripspace >actual &&
362     test_cmp expect actual &&
364     printf "$sss$sss$sss$sss" | git stripspace >actual &&
365     test_cmp expect actual
368 test_expect_success \
369     'consecutive text lines should be unchanged' '
370     printf "$ttt$ttt\n$ttt\n" >expect &&
371     printf "$ttt$ttt\n$ttt\n" | git stripspace >actual &&
372     test_cmp expect actual &&
374     printf "$ttt\n$ttt$ttt\n$ttt\n" >expect &&
375     printf "$ttt\n$ttt$ttt\n$ttt\n" | git stripspace >actual &&
376     test_cmp expect actual &&
378     printf "$ttt\n$ttt\n$ttt\n$ttt$ttt\n" >expect &&
379     printf "$ttt\n$ttt\n$ttt\n$ttt$ttt\n" | git stripspace >actual &&
380     test_cmp expect actual &&
382     printf "$ttt\n$ttt\n\n$ttt$ttt\n$ttt\n" >expect &&
383     printf "$ttt\n$ttt\n\n$ttt$ttt\n$ttt\n" | git stripspace >actual &&
384     test_cmp expect actual &&
386     printf "$ttt$ttt\n\n$ttt\n$ttt$ttt\n" >expect &&
387     printf "$ttt$ttt\n\n$ttt\n$ttt$ttt\n" | git stripspace >actual &&
388     test_cmp expect actual &&
390     printf "$ttt\n$ttt$ttt\n\n$ttt\n" >expect &&
391     printf "$ttt\n$ttt$ttt\n\n$ttt\n" | git stripspace >actual &&
392     test_cmp expect actual
395 test_expect_success 'strip comments, too' '
396         test ! -z "$(echo "# comment" | git stripspace)" &&
397         test -z "$(echo "# comment" | git stripspace -s)"
400 test_done