Junio C Hamano | 095ce95 | 2011-04-22 16:19:27 -0700 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | |
| 3 | test_description='diff with unmerged index entries' |
Ævar Arnfjörð Bjarmason | 16d4bd4 | 2021-10-31 00:24:19 +0200 | [diff] [blame] | 4 | |
| 5 | TEST_PASSES_SANITIZE_LEAK=true |
Junio C Hamano | 095ce95 | 2011-04-22 16:19:27 -0700 | [diff] [blame] | 6 | . ./test-lib.sh |
| 7 | |
| 8 | test_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 King | e6821d0 | 2015-03-25 01:29:52 -0400 | [diff] [blame] | 13 | eval "m$i=\"100644 \$blob$i $i\"" || return 1 |
Junio C Hamano | 095ce95 | 2011-04-22 16:19:27 -0700 | [diff] [blame] | 14 | 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 Sunshine | 74d2f56 | 2021-12-09 00:11:06 -0500 | [diff] [blame] | 23 | case "$path" in ooo) continue ;; esac && |
Junio C Hamano | 095ce95 | 2011-04-22 16:19:27 -0700 | [diff] [blame] | 24 | 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 King | e6821d0 | 2015-03-25 01:29:52 -0400 | [diff] [blame] | 29 | return 1 |
| 30 | done |
| 31 | done |
Junio C Hamano | 095ce95 | 2011-04-22 16:19:27 -0700 | [diff] [blame] | 32 | 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 | |
| 38 | test_expect_success 'diff-files -0' ' |
| 39 | for path in $paths |
| 40 | do |
| 41 | >"$path" && |
Eric Sunshine | cbe1d9d | 2021-12-09 00:11:13 -0500 | [diff] [blame] | 42 | echo ":000000 100644 $ZERO_OID $ZERO_OID U $path" || return 1 |
Junio C Hamano | 095ce95 | 2011-04-22 16:19:27 -0700 | [diff] [blame] | 43 | 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 | |
| 48 | test_expect_success 'diff-files -1' ' |
| 49 | for path in $paths |
| 50 | do |
| 51 | >"$path" && |
brian m. carlson | 8125a58 | 2018-05-13 02:24:13 +0000 | [diff] [blame] | 52 | echo ":000000 100644 $ZERO_OID $ZERO_OID U $path" && |
Junio C Hamano | 095ce95 | 2011-04-22 16:19:27 -0700 | [diff] [blame] | 53 | case "$path" in |
brian m. carlson | 8125a58 | 2018-05-13 02:24:13 +0000 | [diff] [blame] | 54 | x??) echo ":100644 100644 $blob1 $ZERO_OID M $path" |
Eric Sunshine | cbe1d9d | 2021-12-09 00:11:13 -0500 | [diff] [blame] | 55 | esac || return 1 |
Junio C Hamano | 095ce95 | 2011-04-22 16:19:27 -0700 | [diff] [blame] | 56 | 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 | |
| 61 | test_expect_success 'diff-files -2' ' |
| 62 | for path in $paths |
| 63 | do |
| 64 | >"$path" && |
brian m. carlson | 8125a58 | 2018-05-13 02:24:13 +0000 | [diff] [blame] | 65 | echo ":000000 100644 $ZERO_OID $ZERO_OID U $path" && |
Junio C Hamano | 095ce95 | 2011-04-22 16:19:27 -0700 | [diff] [blame] | 66 | case "$path" in |
brian m. carlson | 8125a58 | 2018-05-13 02:24:13 +0000 | [diff] [blame] | 67 | ?x?) echo ":100644 100644 $blob2 $ZERO_OID M $path" |
Eric Sunshine | cbe1d9d | 2021-12-09 00:11:13 -0500 | [diff] [blame] | 68 | esac || return 1 |
Junio C Hamano | 095ce95 | 2011-04-22 16:19:27 -0700 | [diff] [blame] | 69 | 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 | |
| 76 | test_expect_success 'diff-files -3' ' |
| 77 | for path in $paths |
| 78 | do |
| 79 | >"$path" && |
brian m. carlson | 8125a58 | 2018-05-13 02:24:13 +0000 | [diff] [blame] | 80 | echo ":000000 100644 $ZERO_OID $ZERO_OID U $path" && |
Junio C Hamano | 095ce95 | 2011-04-22 16:19:27 -0700 | [diff] [blame] | 81 | case "$path" in |
brian m. carlson | 8125a58 | 2018-05-13 02:24:13 +0000 | [diff] [blame] | 82 | ??x) echo ":100644 100644 $blob3 $ZERO_OID M $path" |
Eric Sunshine | cbe1d9d | 2021-12-09 00:11:13 -0500 | [diff] [blame] | 83 | esac || return 1 |
Junio C Hamano | 095ce95 | 2011-04-22 16:19:27 -0700 | [diff] [blame] | 84 | 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 Grayson | 209d9cb | 2022-12-14 12:41:51 -0500 | [diff] [blame] | 89 | test_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 Hamano | 095ce95 | 2011-04-22 16:19:27 -0700 | [diff] [blame] | 99 | test_done |