more D/F conflict tests
Before starting to muck with this code, let's expose the current breakages that we intend to fix. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano committed
Sep 20, 2009 at 11:49 UTC
934f930b3144d03cacd16bc5117ef2afe3b1d04d
1 file changed
+102
t/t1012-read-tree-df.sh
new
+102
@@ -0,0 +1,102 @@
1
+#!/bin/sh
2
+
3
+test_description='read-tree D/F conflict corner cases'
4
+
5
+. ./test-lib.sh
6
+
7
+maketree () {
8
+ (
9
+ rm -f .git/index .git/index.lock &&
10
+ git clean -d -f -f -q -x &&
11
+ name="$1" &&
12
+ shift &&
13
+ for it
14
+ do
15
+ path=$(expr "$it" : '\([^:]*\)') &&
16
+ mkdir -p $(dirname "$path") &&
17
+ echo "$it" >"$path" &&
18
+ git update-index --add "$path" || exit
19
+ done &&
20
+ git tag "$name" $(git write-tree)
21
+ )
22
+}
23
+
24
+settree () {
25
+ rm -f .git/index .git/index.lock &&
26
+ git clean -d -f -f -q -x &&
27
+ git read-tree "$1" &&
28
+ git checkout-index -f -q -u -a &&
29
+ git update-index --refresh
30
+}
31
+
32
+checkindex () {
33
+ git ls-files -s |
34
+ sed "s|^[0-7][0-7]* $_x40 \([0-3]\) |\1 |" >current &&
35
+ cat >expect &&
36
+ test_cmp expect current
37
+}
38
+
39
+test_expect_success setup '
40
+ maketree O-000 a/b-2/c/d a/b/c/d a/x &&
41
+ maketree A-000 a/b-2/c/d a/b/c/d a/x &&
42
+ maketree A-001 a/b-2/c/d a/b/c/d a/b/c/e a/x &&
43
+ maketree B-000 a/b-2/c/d a/b a/x &&
44
+
45
+ maketree O-010 t-0 t/1 t/2 t=3 &&
46
+ maketree A-010 t-0 t t=3 &&
47
+ maketree B-010 t/1: t=3: &&
48
+
49
+ maketree O-020 ds/dma/ioat.c ds/dma/ioat_dca.c &&
50
+ maketree A-020 ds/dma/ioat/Makefile ds/dma/ioat/registers.h &&
51
+ :
52
+'
53
+
54
+test_expect_failure '3-way (1)' '
55
+ settree A-000 &&
56
+ git read-tree -m -u O-000 A-000 B-000 &&
57
+ checkindex <<-EOF
58
+ 3 a/b
59
+ 0 a/b-2/c/d
60
+ 1 a/b/c/d
61
+ 2 a/b/c/d
62
+ 0 a/x
63
+ EOF
64
+'
65
+
66
+test_expect_failure '3-way (2)' '
67
+ settree A-001 &&
68
+ git read-tree -m -u O-000 A-001 B-000 &&
69
+ checkindex <<-EOF
70
+ 3 a/b
71
+ 0 a/b-2/c/d
72
+ 1 a/b/c/d
73
+ 2 a/b/c/d
74
+ 2 a/b/c/e
75
+ 0 a/x
76
+ EOF
77
+'
78
+
79
+test_expect_success '3-way (3)' '
80
+ settree A-010 &&
81
+ git read-tree -m -u O-010 A-010 B-010 &&
82
+ checkindex <<-EOF
83
+ 2 t
84
+ 1 t-0
85
+ 2 t-0
86
+ 1 t/1
87
+ 3 t/1
88
+ 1 t/2
89
+ 0 t=3
90
+ EOF
91
+'
92
+
93
+test_expect_success '2-way (1)' '
94
+ settree O-020 &&
95
+ git read-tree -m -u O-020 A-020 &&
96
+ checkindex <<-EOF
97
+ 0 ds/dma/ioat/Makefile
98
+ 0 ds/dma/ioat/registers.h
99
+ EOF
100
+'
101
+
102
+test_done