Merge branch 'rs/external-diff-tempfile'
[alt-git.git] / t / t1012-read-tree-df.sh
blobcde93d22cde4ab09fe9fa594a58813f1d3f276af
1 #!/bin/sh
3 test_description='read-tree D/F conflict corner cases'
5 TEST_PASSES_SANITIZE_LEAK=true
6 . ./test-lib.sh
7 . "$TEST_DIRECTORY"/lib-read-tree.sh
9 maketree () {
11 rm -f .git/index .git/index.lock &&
12 git clean -d -f -f -q -x &&
13 name="$1" &&
14 shift &&
15 for it
17 path=$(expr "$it" : '\([^:]*\)') &&
18 mkdir -p $(dirname "$path") &&
19 echo "$it" >"$path" &&
20 git update-index --add "$path" || exit
21 done &&
22 git tag "$name" $(git write-tree)
26 settree () {
27 rm -f .git/index .git/index.lock &&
28 git clean -d -f -f -q -x &&
29 git read-tree "$1" &&
30 git checkout-index -f -q -u -a &&
31 git update-index --refresh
34 checkindex () {
35 git ls-files -s |
36 sed "s|^[0-7][0-7]* $OID_REGEX \([0-3]\) |\1 |" >current &&
37 cat >expect &&
38 test_cmp expect current
41 test_expect_success setup '
42 maketree O-000 a/b-2/c/d a/b/c/d a/x &&
43 maketree A-000 a/b-2/c/d a/b/c/d a/x &&
44 maketree A-001 a/b-2/c/d a/b/c/d a/b/c/e a/x &&
45 maketree B-000 a/b-2/c/d a/b a/x &&
47 maketree O-010 t-0 t/1 t/2 t=3 &&
48 maketree A-010 t-0 t t=3 &&
49 maketree B-010 t/1: t=3: &&
51 maketree O-020 ds/dma/ioat.c ds/dma/ioat_dca.c &&
52 maketree A-020 ds/dma/ioat/Makefile ds/dma/ioat/registers.h &&
56 test_expect_success '3-way (1)' '
57 settree A-000 &&
58 read_tree_u_must_succeed -m -u O-000 A-000 B-000 &&
59 checkindex <<-EOF
60 3 a/b
61 0 a/b-2/c/d
62 1 a/b/c/d
63 2 a/b/c/d
64 0 a/x
65 EOF
68 test_expect_success '3-way (2)' '
69 settree A-001 &&
70 read_tree_u_must_succeed -m -u O-000 A-001 B-000 &&
71 checkindex <<-EOF
72 3 a/b
73 0 a/b-2/c/d
74 1 a/b/c/d
75 2 a/b/c/d
76 2 a/b/c/e
77 0 a/x
78 EOF
81 test_expect_success '3-way (3)' '
82 settree A-010 &&
83 read_tree_u_must_succeed -m -u O-010 A-010 B-010 &&
84 checkindex <<-EOF
85 2 t
86 1 t-0
87 2 t-0
88 1 t/1
89 3 t/1
90 1 t/2
91 0 t=3
92 EOF
95 test_expect_success '2-way (1)' '
96 settree O-020 &&
97 read_tree_u_must_succeed -m -u O-020 A-020 &&
98 checkindex <<-EOF
99 0 ds/dma/ioat/Makefile
100 0 ds/dma/ioat/registers.h
104 test_done