| #!/bin/sh | |
| test_description='diff with unmerged index entries' | |
| . ./test-lib.sh | |
| test_expect_success setup ' | |
| for i in 0 1 2 3 | |
| do | |
| blob=$(echo $i | git hash-object --stdin) && | |
| eval "blob$i=$blob" && | |
| eval "m$i=\"100644 \$blob$i $i\"" || return 1 | |
| done && | |
| paths= && | |
| for b in o x | |
| do | |
| for o in o x | |
| do | |
| for t in o x | |
| do | |
| path="$b$o$t" && | |
| if test "$path" != ooo | |
| then | |
| paths="$paths$path " && | |
| p=" $path" && | |
| case "$b" in x) echo "$m1$p" ;; esac && | |
| case "$o" in x) echo "$m2$p" ;; esac && | |
| case "$t" in x) echo "$m3$p" ;; esac || | |
| return 1 | |
| fi | |
| done | |
| done | |
| done >ls-files-s.expect && | |
| git update-index --index-info <ls-files-s.expect && | |
| git ls-files -s >ls-files-s.actual && | |
| test_cmp ls-files-s.expect ls-files-s.actual | |
| ' | |
| test_expect_success 'diff-files -0' ' | |
| for path in $paths | |
| do | |
| >"$path" && | |
| echo ":000000 100644 $ZERO_OID $ZERO_OID U $path" || return 1 | |
| done >diff-files-0.expect && | |
| git diff-files -0 >diff-files-0.actual && | |
| test_cmp diff-files-0.expect diff-files-0.actual | |
| ' | |
| test_expect_success 'diff-files -1' ' | |
| for path in $paths | |
| do | |
| >"$path" && | |
| echo ":000000 100644 $ZERO_OID $ZERO_OID U $path" && | |
| case "$path" in | |
| x??) echo ":100644 100644 $blob1 $ZERO_OID M $path" | |
| esac || return 1 | |
| done >diff-files-1.expect && | |
| git diff-files -1 >diff-files-1.actual && | |
| test_cmp diff-files-1.expect diff-files-1.actual | |
| ' | |
| test_expect_success 'diff-files -2' ' | |
| for path in $paths | |
| do | |
| >"$path" && | |
| echo ":000000 100644 $ZERO_OID $ZERO_OID U $path" && | |
| case "$path" in | |
| ?x?) echo ":100644 100644 $blob2 $ZERO_OID M $path" | |
| esac || return 1 | |
| done >diff-files-2.expect && | |
| git diff-files -2 >diff-files-2.actual && | |
| test_cmp diff-files-2.expect diff-files-2.actual && | |
| git diff-files >diff-files-default-2.actual && | |
| test_cmp diff-files-2.expect diff-files-default-2.actual | |
| ' | |
| test_expect_success 'diff-files -3' ' | |
| for path in $paths | |
| do | |
| >"$path" && | |
| echo ":000000 100644 $ZERO_OID $ZERO_OID U $path" && | |
| case "$path" in | |
| ??x) echo ":100644 100644 $blob3 $ZERO_OID M $path" | |
| esac || return 1 | |
| done >diff-files-3.expect && | |
| git diff-files -3 >diff-files-3.actual && | |
| test_cmp diff-files-3.expect diff-files-3.actual | |
| ' | |
| test_expect_success 'diff --stat' ' | |
| for path in $paths | |
| do | |
| echo " $path | Unmerged" || return 1 | |
| done >diff-stat.expect && | |
| echo " 0 files changed" >>diff-stat.expect && | |
| git diff --cached --stat >diff-stat.actual && | |
| test_cmp diff-stat.expect diff-stat.actual | |
| ' | |
| test_expect_success 'diff --quiet' ' | |
| test_expect_code 1 git diff --cached --quiet | |
| ' | |
| test_expect_success 'diff --quiet --ignore-all-space' ' | |
| test_expect_code 1 git diff --cached --quiet --ignore-all-space | |
| ' | |
| test_done |