4a2980c8333e99486de839d72c67005bf58fe304
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 git diff expect actual &&
21 echo "$ttt$ttt" >expect &&
22 git stripspace <expect >actual &&
23 git diff expect actual &&
25 echo "$ttt$ttt$ttt" >expect &&
26 git stripspace <expect >actual &&
27 git diff expect actual &&
29 echo "$ttt$ttt$ttt$ttt" >expect &&
30 git stripspace <expect >actual &&
31 git diff 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 git diff expect actual &&
40 echo "$sss$sss$ttt" >expect &&
41 git stripspace <expect >actual &&
42 git diff expect actual &&
44 echo "$sss$sss$sss$ttt" >expect &&
45 git stripspace <expect >actual &&
46 git diff 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 git diff expect actual &&
55 echo "$ttt$sss$sss$ttt" >expect &&
56 git stripspace <expect >actual &&
57 git diff 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 git diff 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 git diff 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 git diff expect actual &&
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 &&
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 &&
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 '
87 test_expect_success \
88 'only consecutive blank lines should be completely removed' '
89 > expect &&
91 printf "\n" | git stripspace >actual &&
92 git diff expect actual &&
94 printf "\n\n\n" | git stripspace >actual &&
95 git diff expect actual &&
97 printf "$sss\n$sss\n$sss\n" | git stripspace >actual &&
98 git diff expect actual &&
100 printf "$sss$sss\n$sss\n\n" | git stripspace >actual &&
101 git diff expect actual &&
103 printf "\n$sss\n$sss$sss\n" | git stripspace >actual &&
104 git diff expect actual &&
106 printf "$sss$sss$sss$sss\n\n\n" | git stripspace >actual &&
107 git diff expect actual &&
109 printf "\n$sss$sss$sss$sss\n\n" | git stripspace >actual &&
110 git diff expect actual &&
112 printf "\n\n$sss$sss$sss$sss\n" | git stripspace >actual &&
113 git diff expect actual
114 '
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 &&
122 printf "$ttt\n" > expect &&
123 printf "\n\n\n$ttt\n" | git stripspace >actual &&
124 git diff expect actual &&
126 printf "$ttt$ttt\n" > expect &&
127 printf "\n\n\n$ttt$ttt\n" | git stripspace >actual &&
128 git diff expect actual &&
130 printf "$ttt$ttt$ttt\n" > expect &&
131 printf "\n\n\n$ttt$ttt$ttt\n" | git stripspace >actual &&
132 git diff expect actual &&
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 &&
138 printf "$ttt\n" > expect &&
140 printf "$sss\n$sss\n$sss\n$ttt\n" | git stripspace >actual &&
141 git diff expect actual &&
143 printf "\n$sss\n$sss$sss\n$ttt\n" | git stripspace >actual &&
144 git diff expect actual &&
146 printf "$sss$sss\n$sss\n\n$ttt\n" | git stripspace >actual &&
147 git diff expect actual &&
149 printf "$sss$sss$sss\n\n\n$ttt\n" | git stripspace >actual &&
150 git diff expect actual &&
152 printf "\n$sss$sss$sss\n\n$ttt\n" | git stripspace >actual &&
153 git diff expect actual &&
155 printf "\n\n$sss$sss$sss\n$ttt\n" | git stripspace >actual &&
156 git diff expect actual
157 '
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 &&
165 printf "$ttt\n" > expect &&
166 printf "$ttt\n\n\n\n" | git stripspace >actual &&
167 git diff expect actual &&
169 printf "$ttt$ttt\n" > expect &&
170 printf "$ttt$ttt\n\n\n\n" | git stripspace >actual &&
171 git diff expect actual &&
173 printf "$ttt$ttt$ttt\n" > expect &&
174 printf "$ttt$ttt$ttt\n\n\n\n" | git stripspace >actual &&
175 git diff expect actual &&
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 &&
181 printf "$ttt\n" > expect &&
183 printf "$ttt\n$sss\n$sss\n$sss\n" | git stripspace >actual &&
184 git diff expect actual &&
186 printf "$ttt\n\n$sss\n$sss$sss\n" | git stripspace >actual &&
187 git diff expect actual &&
189 printf "$ttt\n$sss$sss\n$sss\n\n" | git stripspace >actual &&
190 git diff expect actual &&
192 printf "$ttt\n$sss$sss$sss\n\n\n" | git stripspace >actual &&
193 git diff expect actual &&
195 printf "$ttt\n\n$sss$sss$sss\n\n" | git stripspace >actual &&
196 git diff expect actual &&
198 printf "$ttt\n\n\n$sss$sss$sss\n" | git stripspace >actual &&
199 git diff expect actual
200 '
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 '
210 # text plus spaces at the end:
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 '
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 '
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 &&
238 printf "$ttt\n" >expect &&
239 printf "$ttt$sss$sss" | git stripspace >actual &&
240 git diff expect actual &&
242 printf "$ttt\n" >expect &&
243 printf "$ttt$sss$sss$sss" | git stripspace >actual &&
244 git diff expect actual &&
246 printf "$ttt$ttt\n" >expect &&
247 printf "$ttt$ttt$sss" | git stripspace >actual &&
248 git diff expect actual &&
250 printf "$ttt$ttt\n" >expect &&
251 printf "$ttt$ttt$sss$sss" | git stripspace >actual &&
252 git diff expect actual &&
254 printf "$ttt$ttt$ttt\n" >expect &&
255 printf "$ttt$ttt$ttt$sss" | git stripspace >actual &&
256 git diff expect actual
257 '
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 '
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 &&
275 echo "$ttt" >expect &&
276 echo "$ttt$sss$sss" | git stripspace >actual &&
277 git diff expect actual &&
279 echo "$ttt" >expect &&
280 echo "$ttt$sss$sss$sss" | git stripspace >actual &&
281 git diff expect actual &&
283 echo "$ttt$ttt" >expect &&
284 echo "$ttt$ttt$sss" | git stripspace >actual &&
285 git diff expect actual &&
287 echo "$ttt$ttt" >expect &&
288 echo "$ttt$ttt$sss$sss" | git stripspace >actual &&
289 git diff expect actual &&
291 echo "$ttt$ttt$ttt" >expect &&
292 echo "$ttt$ttt$ttt$sss" | git stripspace >actual &&
293 git diff expect actual
294 '
296 # spaces only:
298 test_expect_success \
299 'spaces with newline at end should be replaced with empty string' '
300 printf "" >expect &&
302 echo | git stripspace >actual &&
303 git diff expect actual &&
305 echo "$sss" | git stripspace >actual &&
306 git diff expect actual &&
308 echo "$sss$sss" | git stripspace >actual &&
309 git diff expect actual &&
311 echo "$sss$sss$sss" | git stripspace >actual &&
312 git diff expect actual &&
314 echo "$sss$sss$sss$sss" | git stripspace >actual &&
315 git diff expect actual
316 '
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 '
327 test_expect_success \
328 'spaces without newline at end should be replaced with empty string' '
329 printf "" >expect &&
331 printf "" | git stripspace >actual &&
332 git diff expect actual &&
334 printf "$sss$sss" | git stripspace >actual &&
335 git diff expect actual &&
337 printf "$sss$sss$sss" | git stripspace >actual &&
338 git diff expect actual &&
340 printf "$sss$sss$sss$sss" | git stripspace >actual &&
341 git diff expect actual
342 '
344 test_done