Refactor --dirstat parsing; deprecate --cumulative and --dirstat-by-file
[git/mingw/j6t.git] / t / t4047-diff-dirstat.sh
blobd0ed62c0dd14a78c7c9ef97354583dc380502775
1 #!/bin/sh
3 test_description='diff --dirstat tests'
4 . ./test-lib.sh
6 # set up two commits where the second commit has these files
7 # (10 lines in each file):
9 # unchanged/text (unchanged from 1st commit)
10 # changed/text (changed 1st line)
11 # rearranged/text (swapped 1st and 2nd line)
12 # dst/copy/unchanged/text (copied from src/copy/unchanged/text, unchanged)
13 # dst/copy/changed/text (copied from src/copy/changed/text, changed)
14 # dst/copy/rearranged/text (copied from src/copy/rearranged/text, rearranged)
15 # dst/move/unchanged/text (moved from src/move/unchanged/text, unchanged)
16 # dst/move/changed/text (moved from src/move/changed/text, changed)
17 # dst/move/rearranged/text (moved from src/move/rearranged/text, rearranged)
19 test_expect_success 'setup' '
20 mkdir unchanged &&
21 mkdir changed &&
22 mkdir rearranged &&
23 mkdir src &&
24 mkdir src/copy &&
25 mkdir src/copy/unchanged &&
26 mkdir src/copy/changed &&
27 mkdir src/copy/rearranged &&
28 mkdir src/move &&
29 mkdir src/move/unchanged &&
30 mkdir src/move/changed &&
31 mkdir src/move/rearranged &&
32 cat <<EOF >unchanged/text &&
33 unchanged line #0
34 unchanged line #1
35 unchanged line #2
36 unchanged line #3
37 unchanged line #4
38 unchanged line #5
39 unchanged line #6
40 unchanged line #7
41 unchanged line #8
42 unchanged line #9
43 EOF
44 cat <<EOF >changed/text &&
45 changed line #0
46 changed line #1
47 changed line #2
48 changed line #3
49 changed line #4
50 changed line #5
51 changed line #6
52 changed line #7
53 changed line #8
54 changed line #9
55 EOF
56 cat <<EOF >rearranged/text &&
57 rearranged line #0
58 rearranged line #1
59 rearranged line #2
60 rearranged line #3
61 rearranged line #4
62 rearranged line #5
63 rearranged line #6
64 rearranged line #7
65 rearranged line #8
66 rearranged line #9
67 EOF
68 cat <<EOF >src/copy/unchanged/text &&
69 copy unchanged line #0
70 copy unchanged line #1
71 copy unchanged line #2
72 copy unchanged line #3
73 copy unchanged line #4
74 copy unchanged line #5
75 copy unchanged line #6
76 copy unchanged line #7
77 copy unchanged line #8
78 copy unchanged line #9
79 EOF
80 cat <<EOF >src/copy/changed/text &&
81 copy changed line #0
82 copy changed line #1
83 copy changed line #2
84 copy changed line #3
85 copy changed line #4
86 copy changed line #5
87 copy changed line #6
88 copy changed line #7
89 copy changed line #8
90 copy changed line #9
91 EOF
92 cat <<EOF >src/copy/rearranged/text &&
93 copy rearranged line #0
94 copy rearranged line #1
95 copy rearranged line #2
96 copy rearranged line #3
97 copy rearranged line #4
98 copy rearranged line #5
99 copy rearranged line #6
100 copy rearranged line #7
101 copy rearranged line #8
102 copy rearranged line #9
104 cat <<EOF >src/move/unchanged/text &&
105 move unchanged line #0
106 move unchanged line #1
107 move unchanged line #2
108 move unchanged line #3
109 move unchanged line #4
110 move unchanged line #5
111 move unchanged line #6
112 move unchanged line #7
113 move unchanged line #8
114 move unchanged line #9
116 cat <<EOF >src/move/changed/text &&
117 move changed line #0
118 move changed line #1
119 move changed line #2
120 move changed line #3
121 move changed line #4
122 move changed line #5
123 move changed line #6
124 move changed line #7
125 move changed line #8
126 move changed line #9
128 cat <<EOF >src/move/rearranged/text &&
129 move rearranged line #0
130 move rearranged line #1
131 move rearranged line #2
132 move rearranged line #3
133 move rearranged line #4
134 move rearranged line #5
135 move rearranged line #6
136 move rearranged line #7
137 move rearranged line #8
138 move rearranged line #9
140 git add . &&
141 git commit -m "initial" &&
142 mkdir dst &&
143 mkdir dst/copy &&
144 mkdir dst/copy/unchanged &&
145 mkdir dst/copy/changed &&
146 mkdir dst/copy/rearranged &&
147 mkdir dst/move &&
148 mkdir dst/move/unchanged &&
149 mkdir dst/move/changed &&
150 mkdir dst/move/rearranged &&
151 cat <<EOF >changed/text &&
152 CHANGED XXXXXXX line #0
153 changed line #1
154 changed line #2
155 changed line #3
156 changed line #4
157 changed line #5
158 changed line #6
159 changed line #7
160 changed line #8
161 changed line #9
163 cat <<EOF >rearranged/text &&
164 rearranged line #1
165 rearranged line #0
166 rearranged line #2
167 rearranged line #3
168 rearranged line #4
169 rearranged line #5
170 rearranged line #6
171 rearranged line #7
172 rearranged line #8
173 rearranged line #9
175 cat <<EOF >dst/copy/unchanged/text &&
176 copy unchanged line #0
177 copy unchanged line #1
178 copy unchanged line #2
179 copy unchanged line #3
180 copy unchanged line #4
181 copy unchanged line #5
182 copy unchanged line #6
183 copy unchanged line #7
184 copy unchanged line #8
185 copy unchanged line #9
187 cat <<EOF >dst/copy/changed/text &&
188 copy XXXCHANGED line #0
189 copy changed line #1
190 copy changed line #2
191 copy changed line #3
192 copy changed line #4
193 copy changed line #5
194 copy changed line #6
195 copy changed line #7
196 copy changed line #8
197 copy changed line #9
199 cat <<EOF >dst/copy/rearranged/text &&
200 copy rearranged line #1
201 copy rearranged line #0
202 copy rearranged line #2
203 copy rearranged line #3
204 copy rearranged line #4
205 copy rearranged line #5
206 copy rearranged line #6
207 copy rearranged line #7
208 copy rearranged line #8
209 copy rearranged line #9
211 cat <<EOF >dst/move/unchanged/text &&
212 move unchanged line #0
213 move unchanged line #1
214 move unchanged line #2
215 move unchanged line #3
216 move unchanged line #4
217 move unchanged line #5
218 move unchanged line #6
219 move unchanged line #7
220 move unchanged line #8
221 move unchanged line #9
223 cat <<EOF >dst/move/changed/text &&
224 move XXXCHANGED line #0
225 move changed line #1
226 move changed line #2
227 move changed line #3
228 move changed line #4
229 move changed line #5
230 move changed line #6
231 move changed line #7
232 move changed line #8
233 move changed line #9
235 cat <<EOF >dst/move/rearranged/text &&
236 move rearranged line #1
237 move rearranged line #0
238 move rearranged line #2
239 move rearranged line #3
240 move rearranged line #4
241 move rearranged line #5
242 move rearranged line #6
243 move rearranged line #7
244 move rearranged line #8
245 move rearranged line #9
247 git add . &&
248 git rm -r src/move/unchanged &&
249 git rm -r src/move/changed &&
250 git rm -r src/move/rearranged &&
251 git commit -m "changes"
254 cat <<EOF >expect_diff_stat
255 changed/text | 2 +-
256 dst/copy/changed/text | 10 ++++++++++
257 dst/copy/rearranged/text | 10 ++++++++++
258 dst/copy/unchanged/text | 10 ++++++++++
259 dst/move/changed/text | 10 ++++++++++
260 dst/move/rearranged/text | 10 ++++++++++
261 dst/move/unchanged/text | 10 ++++++++++
262 rearranged/text | 2 +-
263 src/move/changed/text | 10 ----------
264 src/move/rearranged/text | 10 ----------
265 src/move/unchanged/text | 10 ----------
266 11 files changed, 62 insertions(+), 32 deletions(-)
269 cat <<EOF >expect_diff_stat_M
270 changed/text | 2 +-
271 dst/copy/changed/text | 10 ++++++++++
272 dst/copy/rearranged/text | 10 ++++++++++
273 dst/copy/unchanged/text | 10 ++++++++++
274 {src => dst}/move/changed/text | 2 +-
275 {src => dst}/move/rearranged/text | 2 +-
276 {src => dst}/move/unchanged/text | 0
277 rearranged/text | 2 +-
278 8 files changed, 34 insertions(+), 4 deletions(-)
281 cat <<EOF >expect_diff_stat_CC
282 changed/text | 2 +-
283 {src => dst}/copy/changed/text | 2 +-
284 {src => dst}/copy/rearranged/text | 2 +-
285 {src => dst}/copy/unchanged/text | 0
286 {src => dst}/move/changed/text | 2 +-
287 {src => dst}/move/rearranged/text | 2 +-
288 {src => dst}/move/unchanged/text | 0
289 rearranged/text | 2 +-
290 8 files changed, 6 insertions(+), 6 deletions(-)
293 test_expect_success 'sanity check setup (--stat)' '
294 git diff --stat HEAD^..HEAD >actual_diff_stat &&
295 test_cmp expect_diff_stat actual_diff_stat &&
296 git diff --stat -M HEAD^..HEAD >actual_diff_stat_M &&
297 test_cmp expect_diff_stat_M actual_diff_stat_M &&
298 git diff --stat -C -C HEAD^..HEAD >actual_diff_stat_CC &&
299 test_cmp expect_diff_stat_CC actual_diff_stat_CC
302 # changed/text and rearranged/text falls below default 3% threshold
303 cat <<EOF >expect_diff_dirstat
304 10.8% dst/copy/changed/
305 10.8% dst/copy/rearranged/
306 10.8% dst/copy/unchanged/
307 10.8% dst/move/changed/
308 10.8% dst/move/rearranged/
309 10.8% dst/move/unchanged/
310 10.8% src/move/changed/
311 10.8% src/move/rearranged/
312 10.8% src/move/unchanged/
315 # rearranged/text falls below default 3% threshold
316 cat <<EOF >expect_diff_dirstat_M
317 5.8% changed/
318 29.3% dst/copy/changed/
319 29.3% dst/copy/rearranged/
320 29.3% dst/copy/unchanged/
321 5.8% dst/move/changed/
324 # rearranged/text falls below default 3% threshold
325 cat <<EOF >expect_diff_dirstat_CC
326 32.6% changed/
327 32.6% dst/copy/changed/
328 32.6% dst/move/changed/
331 test_expect_success 'various ways to misspell --dirstat' '
332 test_must_fail git show --dirstat10 &&
333 test_must_fail git show --dirstat10,files &&
334 test_must_fail git show -X=20 &&
335 test_must_fail git show -X=20,cumulative
338 test_expect_success 'vanilla --dirstat' '
339 git diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&
340 test_cmp expect_diff_dirstat actual_diff_dirstat &&
341 git diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&
342 test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
343 git diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
344 test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
347 test_expect_success 'vanilla -X' '
348 git diff -X HEAD^..HEAD >actual_diff_dirstat &&
349 test_cmp expect_diff_dirstat actual_diff_dirstat &&
350 git diff -X -M HEAD^..HEAD >actual_diff_dirstat_M &&
351 test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
352 git diff -X -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
353 test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
356 test_expect_success 'explicit defaults: --dirstat=changes,noncumulative,3' '
357 git diff --dirstat=changes,noncumulative,3 HEAD^..HEAD >actual_diff_dirstat &&
358 test_cmp expect_diff_dirstat actual_diff_dirstat &&
359 git diff --dirstat=changes,noncumulative,3 -M HEAD^..HEAD >actual_diff_dirstat_M &&
360 test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
361 git diff --dirstat=changes,noncumulative,3 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
362 test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
365 test_expect_success 'explicit defaults: -Xchanges,noncumulative,3' '
366 git diff -Xchanges,noncumulative,3 HEAD^..HEAD >actual_diff_dirstat &&
367 test_cmp expect_diff_dirstat actual_diff_dirstat &&
368 git diff -Xchanges,noncumulative,3 -M HEAD^..HEAD >actual_diff_dirstat_M &&
369 test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
370 git diff -Xchanges,noncumulative,3 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
371 test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
374 test_expect_success 'later options override earlier options:' '
375 git diff --dirstat=files,10,cumulative,changes,noncumulative,3 HEAD^..HEAD >actual_diff_dirstat &&
376 test_cmp expect_diff_dirstat actual_diff_dirstat &&
377 git diff --dirstat=files,10,cumulative,changes,noncumulative,3 -M HEAD^..HEAD >actual_diff_dirstat_M &&
378 test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
379 git diff --dirstat=files,10,cumulative,changes,noncumulative,3 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
380 test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
381 git diff --dirstat=files --dirstat=10 --dirstat=cumulative --dirstat=changes --dirstat=noncumulative -X3 HEAD^..HEAD >actual_diff_dirstat &&
382 test_cmp expect_diff_dirstat actual_diff_dirstat &&
383 git diff --dirstat=files --dirstat=10 --dirstat=cumulative --dirstat=changes --dirstat=noncumulative -X3 -M HEAD^..HEAD >actual_diff_dirstat_M &&
384 test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
385 git diff --dirstat=files --dirstat=10 --dirstat=cumulative --dirstat=changes --dirstat=noncumulative -X3 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
386 test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
389 cat <<EOF >expect_diff_dirstat
390 2.1% changed/
391 10.8% dst/copy/changed/
392 10.8% dst/copy/rearranged/
393 10.8% dst/copy/unchanged/
394 10.8% dst/move/changed/
395 10.8% dst/move/rearranged/
396 10.8% dst/move/unchanged/
397 0.0% rearranged/
398 10.8% src/move/changed/
399 10.8% src/move/rearranged/
400 10.8% src/move/unchanged/
403 cat <<EOF >expect_diff_dirstat_M
404 5.8% changed/
405 29.3% dst/copy/changed/
406 29.3% dst/copy/rearranged/
407 29.3% dst/copy/unchanged/
408 5.8% dst/move/changed/
409 0.1% dst/move/rearranged/
410 0.1% rearranged/
413 cat <<EOF >expect_diff_dirstat_CC
414 32.6% changed/
415 32.6% dst/copy/changed/
416 0.6% dst/copy/rearranged/
417 32.6% dst/move/changed/
418 0.6% dst/move/rearranged/
419 0.6% rearranged/
422 test_expect_success '--dirstat=0' '
423 git diff --dirstat=0 HEAD^..HEAD >actual_diff_dirstat &&
424 test_cmp expect_diff_dirstat actual_diff_dirstat &&
425 git diff --dirstat=0 -M HEAD^..HEAD >actual_diff_dirstat_M &&
426 test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
427 git diff --dirstat=0 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
428 test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
431 test_expect_success '-X0' '
432 git diff -X0 HEAD^..HEAD >actual_diff_dirstat &&
433 test_cmp expect_diff_dirstat actual_diff_dirstat &&
434 git diff -X0 -M HEAD^..HEAD >actual_diff_dirstat_M &&
435 test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
436 git diff -X0 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
437 test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
440 cat <<EOF >expect_diff_dirstat
441 2.1% changed/
442 10.8% dst/copy/changed/
443 10.8% dst/copy/rearranged/
444 10.8% dst/copy/unchanged/
445 32.5% dst/copy/
446 10.8% dst/move/changed/
447 10.8% dst/move/rearranged/
448 10.8% dst/move/unchanged/
449 32.5% dst/move/
450 65.1% dst/
451 0.0% rearranged/
452 10.8% src/move/changed/
453 10.8% src/move/rearranged/
454 10.8% src/move/unchanged/
455 32.5% src/move/
458 cat <<EOF >expect_diff_dirstat_M
459 5.8% changed/
460 29.3% dst/copy/changed/
461 29.3% dst/copy/rearranged/
462 29.3% dst/copy/unchanged/
463 88.0% dst/copy/
464 5.8% dst/move/changed/
465 0.1% dst/move/rearranged/
466 5.9% dst/move/
467 94.0% dst/
468 0.1% rearranged/
471 cat <<EOF >expect_diff_dirstat_CC
472 32.6% changed/
473 32.6% dst/copy/changed/
474 0.6% dst/copy/rearranged/
475 33.3% dst/copy/
476 32.6% dst/move/changed/
477 0.6% dst/move/rearranged/
478 33.3% dst/move/
479 66.6% dst/
480 0.6% rearranged/
483 test_expect_success '--dirstat=0 --cumulative' '
484 git diff --dirstat=0 --cumulative HEAD^..HEAD >actual_diff_dirstat &&
485 test_cmp expect_diff_dirstat actual_diff_dirstat &&
486 git diff --dirstat=0 --cumulative -M HEAD^..HEAD >actual_diff_dirstat_M &&
487 test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
488 git diff --dirstat=0 --cumulative -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
489 test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
492 test_expect_success '--dirstat=0,cumulative' '
493 git diff --dirstat=0,cumulative HEAD^..HEAD >actual_diff_dirstat &&
494 test_cmp expect_diff_dirstat actual_diff_dirstat &&
495 git diff --dirstat=0,cumulative -M HEAD^..HEAD >actual_diff_dirstat_M &&
496 test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
497 git diff --dirstat=0,cumulative -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
498 test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
501 test_expect_success '-X0,cumulative' '
502 git diff -X0,cumulative HEAD^..HEAD >actual_diff_dirstat &&
503 test_cmp expect_diff_dirstat actual_diff_dirstat &&
504 git diff -X0,cumulative -M HEAD^..HEAD >actual_diff_dirstat_M &&
505 test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
506 git diff -X0,cumulative -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
507 test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
510 cat <<EOF >expect_diff_dirstat
511 9.0% changed/
512 9.0% dst/copy/changed/
513 9.0% dst/copy/rearranged/
514 9.0% dst/copy/unchanged/
515 9.0% dst/move/changed/
516 9.0% dst/move/rearranged/
517 9.0% dst/move/unchanged/
518 9.0% rearranged/
519 9.0% src/move/changed/
520 9.0% src/move/rearranged/
521 9.0% src/move/unchanged/
524 cat <<EOF >expect_diff_dirstat_M
525 14.2% changed/
526 14.2% dst/copy/changed/
527 14.2% dst/copy/rearranged/
528 14.2% dst/copy/unchanged/
529 14.2% dst/move/changed/
530 14.2% dst/move/rearranged/
531 14.2% rearranged/
534 cat <<EOF >expect_diff_dirstat_CC
535 16.6% changed/
536 16.6% dst/copy/changed/
537 16.6% dst/copy/rearranged/
538 16.6% dst/move/changed/
539 16.6% dst/move/rearranged/
540 16.6% rearranged/
543 test_expect_success '--dirstat-by-file' '
544 git diff --dirstat-by-file HEAD^..HEAD >actual_diff_dirstat &&
545 test_cmp expect_diff_dirstat actual_diff_dirstat &&
546 git diff --dirstat-by-file -M HEAD^..HEAD >actual_diff_dirstat_M &&
547 test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
548 git diff --dirstat-by-file -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
549 test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
552 test_expect_success '--dirstat=files' '
553 git diff --dirstat=files HEAD^..HEAD >actual_diff_dirstat &&
554 test_cmp expect_diff_dirstat actual_diff_dirstat &&
555 git diff --dirstat=files -M HEAD^..HEAD >actual_diff_dirstat_M &&
556 test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
557 git diff --dirstat=files -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
558 test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
561 cat <<EOF >expect_diff_dirstat
562 27.2% dst/copy/
563 27.2% dst/move/
564 27.2% src/move/
567 cat <<EOF >expect_diff_dirstat_M
568 14.2% changed/
569 14.2% dst/copy/changed/
570 14.2% dst/copy/rearranged/
571 14.2% dst/copy/unchanged/
572 14.2% dst/move/changed/
573 14.2% dst/move/rearranged/
574 14.2% rearranged/
577 cat <<EOF >expect_diff_dirstat_CC
578 16.6% changed/
579 16.6% dst/copy/changed/
580 16.6% dst/copy/rearranged/
581 16.6% dst/move/changed/
582 16.6% dst/move/rearranged/
583 16.6% rearranged/
586 test_expect_success '--dirstat-by-file=10' '
587 git diff --dirstat-by-file=10 HEAD^..HEAD >actual_diff_dirstat &&
588 test_cmp expect_diff_dirstat actual_diff_dirstat &&
589 git diff --dirstat-by-file=10 -M HEAD^..HEAD >actual_diff_dirstat_M &&
590 test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
591 git diff --dirstat-by-file=10 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
592 test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
595 test_expect_success '--dirstat=files,10' '
596 git diff --dirstat=files,10 HEAD^..HEAD >actual_diff_dirstat &&
597 test_cmp expect_diff_dirstat actual_diff_dirstat &&
598 git diff --dirstat=files,10 -M HEAD^..HEAD >actual_diff_dirstat_M &&
599 test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
600 git diff --dirstat=files,10 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
601 test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
604 cat <<EOF >expect_diff_dirstat
605 9.0% changed/
606 9.0% dst/copy/changed/
607 9.0% dst/copy/rearranged/
608 9.0% dst/copy/unchanged/
609 27.2% dst/copy/
610 9.0% dst/move/changed/
611 9.0% dst/move/rearranged/
612 9.0% dst/move/unchanged/
613 27.2% dst/move/
614 54.5% dst/
615 9.0% rearranged/
616 9.0% src/move/changed/
617 9.0% src/move/rearranged/
618 9.0% src/move/unchanged/
619 27.2% src/move/
622 cat <<EOF >expect_diff_dirstat_M
623 14.2% changed/
624 14.2% dst/copy/changed/
625 14.2% dst/copy/rearranged/
626 14.2% dst/copy/unchanged/
627 42.8% dst/copy/
628 14.2% dst/move/changed/
629 14.2% dst/move/rearranged/
630 28.5% dst/move/
631 71.4% dst/
632 14.2% rearranged/
635 cat <<EOF >expect_diff_dirstat_CC
636 16.6% changed/
637 16.6% dst/copy/changed/
638 16.6% dst/copy/rearranged/
639 33.3% dst/copy/
640 16.6% dst/move/changed/
641 16.6% dst/move/rearranged/
642 33.3% dst/move/
643 66.6% dst/
644 16.6% rearranged/
647 test_expect_success '--dirstat-by-file --cumulative' '
648 git diff --dirstat-by-file --cumulative HEAD^..HEAD >actual_diff_dirstat &&
649 test_cmp expect_diff_dirstat actual_diff_dirstat &&
650 git diff --dirstat-by-file --cumulative -M HEAD^..HEAD >actual_diff_dirstat_M &&
651 test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
652 git diff --dirstat-by-file --cumulative -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
653 test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
656 test_expect_success '--dirstat=files,cumulative' '
657 git diff --dirstat=files,cumulative HEAD^..HEAD >actual_diff_dirstat &&
658 test_cmp expect_diff_dirstat actual_diff_dirstat &&
659 git diff --dirstat=files,cumulative -M HEAD^..HEAD >actual_diff_dirstat_M &&
660 test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
661 git diff --dirstat=files,cumulative -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
662 test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
665 cat <<EOF >expect_diff_dirstat
666 27.2% dst/copy/
667 27.2% dst/move/
668 54.5% dst/
669 27.2% src/move/
672 cat <<EOF >expect_diff_dirstat_M
673 14.2% changed/
674 14.2% dst/copy/changed/
675 14.2% dst/copy/rearranged/
676 14.2% dst/copy/unchanged/
677 42.8% dst/copy/
678 14.2% dst/move/changed/
679 14.2% dst/move/rearranged/
680 28.5% dst/move/
681 71.4% dst/
682 14.2% rearranged/
685 cat <<EOF >expect_diff_dirstat_CC
686 16.6% changed/
687 16.6% dst/copy/changed/
688 16.6% dst/copy/rearranged/
689 33.3% dst/copy/
690 16.6% dst/move/changed/
691 16.6% dst/move/rearranged/
692 33.3% dst/move/
693 66.6% dst/
694 16.6% rearranged/
697 test_expect_success '--dirstat=files,cumulative,10' '
698 git diff --dirstat=files,cumulative,10 HEAD^..HEAD >actual_diff_dirstat &&
699 test_cmp expect_diff_dirstat actual_diff_dirstat &&
700 git diff --dirstat=files,cumulative,10 -M HEAD^..HEAD >actual_diff_dirstat_M &&
701 test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
702 git diff --dirstat=files,cumulative,10 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
703 test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
706 test_done