1#!/bin/sh
2
3test_description='diff with unmerged index entries'
4. ./test-lib.sh
5
6test_expect_success setup '
7 for i in 0 1 2 3
8 do
9 blob=$(echo $i | git hash-object --stdin) &&
10 eval "blob$i=$blob" &&
11 eval "m$i=\"100644 \$blob$i $i\"" || return 1
12 done &&
13 paths= &&
14 for b in o x
15 do
16 for o in o x
17 do
18 for t in o x
19 do
20 path="$b$o$t" &&
21 case "$path" in ooo) continue ;; esac
22 paths="$paths$path " &&
23 p=" $path" &&
24 case "$b" in x) echo "$m1$p" ;; esac &&
25 case "$o" in x) echo "$m2$p" ;; esac &&
26 case "$t" in x) echo "$m3$p" ;; esac ||
27 return 1
28 done
29 done
30 done >ls-files-s.expect &&
31 git update-index --index-info <ls-files-s.expect &&
32 git ls-files -s >ls-files-s.actual &&
33 test_cmp ls-files-s.expect ls-files-s.actual
34'
35
36test_expect_success 'diff-files -0' '
37 for path in $paths
38 do
39 >"$path" &&
40 echo ":000000 100644 $ZERO_OID $ZERO_OID U $path"
41 done >diff-files-0.expect &&
42 git diff-files -0 >diff-files-0.actual &&
43 test_cmp diff-files-0.expect diff-files-0.actual
44'
45
46test_expect_success 'diff-files -1' '
47 for path in $paths
48 do
49 >"$path" &&
50 echo ":000000 100644 $ZERO_OID $ZERO_OID U $path" &&
51 case "$path" in
52 x??) echo ":100644 100644 $blob1 $ZERO_OID M $path"
53 esac
54 done >diff-files-1.expect &&
55 git diff-files -1 >diff-files-1.actual &&
56 test_cmp diff-files-1.expect diff-files-1.actual
57'
58
59test_expect_success 'diff-files -2' '
60 for path in $paths
61 do
62 >"$path" &&
63 echo ":000000 100644 $ZERO_OID $ZERO_OID U $path" &&
64 case "$path" in
65 ?x?) echo ":100644 100644 $blob2 $ZERO_OID M $path"
66 esac
67 done >diff-files-2.expect &&
68 git diff-files -2 >diff-files-2.actual &&
69 test_cmp diff-files-2.expect diff-files-2.actual &&
70 git diff-files >diff-files-default-2.actual &&
71 test_cmp diff-files-2.expect diff-files-default-2.actual
72'
73
74test_expect_success 'diff-files -3' '
75 for path in $paths
76 do
77 >"$path" &&
78 echo ":000000 100644 $ZERO_OID $ZERO_OID U $path" &&
79 case "$path" in
80 ??x) echo ":100644 100644 $blob3 $ZERO_OID M $path"
81 esac
82 done >diff-files-3.expect &&
83 git diff-files -3 >diff-files-3.actual &&
84 test_cmp diff-files-3.expect diff-files-3.actual
85'
86
87test_done