blob: ffaf69335f7b224f76ece7228435a4ce057e5c83 [file] [log] [blame]
Junio C Hamano095ce952011-04-22 16:19:27 -07001#!/bin/sh
2
3test_description='diff with unmerged index entries'
Ævar Arnfjörð Bjarmason16d4bd42021-10-31 00:24:19 +02004
5TEST_PASSES_SANITIZE_LEAK=true
Junio C Hamano095ce952011-04-22 16:19:27 -07006. ./test-lib.sh
7
8test_expect_success setup '
9 for i in 0 1 2 3
10 do
11 blob=$(echo $i | git hash-object --stdin) &&
12 eval "blob$i=$blob" &&
Jeff Kinge6821d02015-03-25 01:29:52 -040013 eval "m$i=\"100644 \$blob$i $i\"" || return 1
Junio C Hamano095ce952011-04-22 16:19:27 -070014 done &&
15 paths= &&
16 for b in o x
17 do
18 for o in o x
19 do
20 for t in o x
21 do
22 path="$b$o$t" &&
Eric Sunshine74d2f562021-12-09 00:11:06 -050023 case "$path" in ooo) continue ;; esac &&
Junio C Hamano095ce952011-04-22 16:19:27 -070024 paths="$paths$path " &&
25 p=" $path" &&
26 case "$b" in x) echo "$m1$p" ;; esac &&
27 case "$o" in x) echo "$m2$p" ;; esac &&
28 case "$t" in x) echo "$m3$p" ;; esac ||
Jeff Kinge6821d02015-03-25 01:29:52 -040029 return 1
30 done
31 done
Junio C Hamano095ce952011-04-22 16:19:27 -070032 done >ls-files-s.expect &&
33 git update-index --index-info <ls-files-s.expect &&
34 git ls-files -s >ls-files-s.actual &&
35 test_cmp ls-files-s.expect ls-files-s.actual
36'
37
38test_expect_success 'diff-files -0' '
39 for path in $paths
40 do
41 >"$path" &&
Eric Sunshinecbe1d9d2021-12-09 00:11:13 -050042 echo ":000000 100644 $ZERO_OID $ZERO_OID U $path" || return 1
Junio C Hamano095ce952011-04-22 16:19:27 -070043 done >diff-files-0.expect &&
44 git diff-files -0 >diff-files-0.actual &&
45 test_cmp diff-files-0.expect diff-files-0.actual
46'
47
48test_expect_success 'diff-files -1' '
49 for path in $paths
50 do
51 >"$path" &&
brian m. carlson8125a582018-05-13 02:24:13 +000052 echo ":000000 100644 $ZERO_OID $ZERO_OID U $path" &&
Junio C Hamano095ce952011-04-22 16:19:27 -070053 case "$path" in
brian m. carlson8125a582018-05-13 02:24:13 +000054 x??) echo ":100644 100644 $blob1 $ZERO_OID M $path"
Eric Sunshinecbe1d9d2021-12-09 00:11:13 -050055 esac || return 1
Junio C Hamano095ce952011-04-22 16:19:27 -070056 done >diff-files-1.expect &&
57 git diff-files -1 >diff-files-1.actual &&
58 test_cmp diff-files-1.expect diff-files-1.actual
59'
60
61test_expect_success 'diff-files -2' '
62 for path in $paths
63 do
64 >"$path" &&
brian m. carlson8125a582018-05-13 02:24:13 +000065 echo ":000000 100644 $ZERO_OID $ZERO_OID U $path" &&
Junio C Hamano095ce952011-04-22 16:19:27 -070066 case "$path" in
brian m. carlson8125a582018-05-13 02:24:13 +000067 ?x?) echo ":100644 100644 $blob2 $ZERO_OID M $path"
Eric Sunshinecbe1d9d2021-12-09 00:11:13 -050068 esac || return 1
Junio C Hamano095ce952011-04-22 16:19:27 -070069 done >diff-files-2.expect &&
70 git diff-files -2 >diff-files-2.actual &&
71 test_cmp diff-files-2.expect diff-files-2.actual &&
72 git diff-files >diff-files-default-2.actual &&
73 test_cmp diff-files-2.expect diff-files-default-2.actual
74'
75
76test_expect_success 'diff-files -3' '
77 for path in $paths
78 do
79 >"$path" &&
brian m. carlson8125a582018-05-13 02:24:13 +000080 echo ":000000 100644 $ZERO_OID $ZERO_OID U $path" &&
Junio C Hamano095ce952011-04-22 16:19:27 -070081 case "$path" in
brian m. carlson8125a582018-05-13 02:24:13 +000082 ??x) echo ":100644 100644 $blob3 $ZERO_OID M $path"
Eric Sunshinecbe1d9d2021-12-09 00:11:13 -050083 esac || return 1
Junio C Hamano095ce952011-04-22 16:19:27 -070084 done >diff-files-3.expect &&
85 git diff-files -3 >diff-files-3.actual &&
86 test_cmp diff-files-3.expect diff-files-3.actual
87'
88
Peter Grayson209d9cb2022-12-14 12:41:51 -050089test_expect_success 'diff --stat' '
90 for path in $paths
91 do
92 echo " $path | Unmerged" || return 1
93 done >diff-stat.expect &&
94 echo " 0 files changed" >>diff-stat.expect &&
95 git diff --cached --stat >diff-stat.actual &&
96 test_cmp diff-stat.expect diff-stat.actual
97'
98
Junio C Hamano095ce952011-04-22 16:19:27 -070099test_done