t4008: modernise style
Update this ancient test script to a more modern style in which the expected result is prepared inside the body of the test that uses it. Also, instead of using $tree, a shell variable, throughout the test script, create a tag that points at it, to make it easier to manually debug the test script in its trash directory. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano committed
Feb 15, 2015 at 14:21 UTC
db7b9e3ad39a4135072a1fd619b76d1c1093b501
1 file changed
+126
-160
t/t4008-diff-break-rewrite.sh
+126
-160
@@ -24,165 +24,131 @@ Further, with -B and -M together, these should turn into two renames.
24
. ./test-lib.sh
25
. "$TEST_DIRECTORY"/diff-lib.sh ;# test-lib chdir's into trash
26
27
-test_expect_success \
28
- setup \
29
- 'cat "$TEST_DIRECTORY"/diff-lib/README >file0 &&
30
- cat "$TEST_DIRECTORY"/diff-lib/COPYING >file1 &&
31
- git update-index --add file0 file1 &&
32
- tree=$(git write-tree) &&
33
- echo "$tree"'
34
-
35
-test_expect_success \
36
- 'change file1 with copy-edit of file0 and remove file0' \
37
- 'sed -e "s/git/GIT/" file0 >file1 &&
38
- rm -f file0 &&
39
- git update-index --remove file0 file1'
40
-
41
-test_expect_success \
42
- 'run diff with -B' \
43
- 'git diff-index -B --cached "$tree" >current'
44
-
45
-cat >expected <<\EOF
46
-:100644 000000 548142c327a6790ff8821d67c2ee1eff7a656b52 0000000000000000000000000000000000000000 D file0
47
-:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 2fbedd0b5d4b8126e4750c3bee305e8ff79f80ec M100 file1
48
-EOF
49
-
50
-test_expect_success \
51
- 'validate result of -B (#1)' \
52
- 'compare_diff_raw expected current'
53
-
54
-test_expect_success \
55
- 'run diff with -B and -M' \
56
- 'git diff-index -B -M "$tree" >current'
57
-
58
-cat >expected <<\EOF
59
-:100644 100644 548142c327a6790ff8821d67c2ee1eff7a656b52 2fbedd0b5d4b8126e4750c3bee305e8ff79f80ec R100 file0 file1
60
-EOF
61
-
62
-test_expect_success \
63
- 'validate result of -B -M (#2)' \
64
- 'compare_diff_raw expected current'
65
-
66
-test_expect_success \
67
- 'swap file0 and file1' \
68
- 'rm -f file0 file1 &&
69
- git read-tree -m $tree &&
70
- git checkout-index -f -u -a &&
71
- mv file0 tmp &&
72
- mv file1 file0 &&
73
- mv tmp file1 &&
74
- git update-index file0 file1'
75
-
76
-test_expect_success \
77
- 'run diff with -B' \
78
- 'git diff-index -B "$tree" >current'
79
-
80
-cat >expected <<\EOF
81
-:100644 100644 548142c327a6790ff8821d67c2ee1eff7a656b52 6ff87c4664981e4397625791c8ea3bbb5f2279a3 M100 file0
82
-:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 548142c327a6790ff8821d67c2ee1eff7a656b52 M100 file1
83
-EOF
84
-
85
-test_expect_success \
86
- 'validate result of -B (#3)' \
87
- 'compare_diff_raw expected current'
88
-
89
-test_expect_success \
90
- 'run diff with -B and -M' \
91
- 'git diff-index -B -M "$tree" >current'
92
-
93
-cat >expected <<\EOF
94
-:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 6ff87c4664981e4397625791c8ea3bbb5f2279a3 R100 file1 file0
95
-:100644 100644 548142c327a6790ff8821d67c2ee1eff7a656b52 548142c327a6790ff8821d67c2ee1eff7a656b52 R100 file0 file1
96
-EOF
97
-
98
-test_expect_success \
99
- 'validate result of -B -M (#4)' \
100
- 'compare_diff_raw expected current'
101
-
102
-test_expect_success \
103
- 'make file0 into something completely different' \
104
- 'rm -f file0 &&
105
- test_ln_s_add frotz file0 &&
106
- git update-index file1'
107
-
108
-test_expect_success \
109
- 'run diff with -B' \
110
- 'git diff-index -B "$tree" >current'
111
-
112
-cat >expected <<\EOF
113
-:100644 120000 548142c327a6790ff8821d67c2ee1eff7a656b52 67be421f88824578857624f7b3dc75e99a8a1481 T file0
114
-:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 548142c327a6790ff8821d67c2ee1eff7a656b52 M100 file1
115
-EOF
116
-
117
-test_expect_success \
118
- 'validate result of -B (#5)' \
119
- 'compare_diff_raw expected current'
120
-
121
-test_expect_success \
122
- 'run diff with -B -M' \
123
- 'git diff-index -B -M "$tree" >current'
124
-
125
-# file0 changed from regular to symlink. file1 is very close to the preimage of file0.
126
-# the change does not make file0 disappear, so file1 is denoted as a copy of file0
127
-cat >expected <<\EOF
128
-:100644 120000 548142c327a6790ff8821d67c2ee1eff7a656b52 67be421f88824578857624f7b3dc75e99a8a1481 T file0
129
-:100644 100644 548142c327a6790ff8821d67c2ee1eff7a656b52 548142c327a6790ff8821d67c2ee1eff7a656b52 C file0 file1
130
-EOF
131
-
132
-test_expect_success \
133
- 'validate result of -B -M (#6)' \
134
- 'compare_diff_raw expected current'
135
-
136
-test_expect_success \
137
- 'run diff with -M' \
138
- 'git diff-index -M "$tree" >current'
139
-
140
-# This should not mistake file0 as the copy source of new file1
141
-# due to type differences.
142
-cat >expected <<\EOF
143
-:100644 120000 548142c327a6790ff8821d67c2ee1eff7a656b52 67be421f88824578857624f7b3dc75e99a8a1481 T file0
144
-:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 548142c327a6790ff8821d67c2ee1eff7a656b52 M file1
145
-EOF
146
-
147
-test_expect_success \
148
- 'validate result of -M (#7)' \
149
- 'compare_diff_raw expected current'
150
-
151
-test_expect_success \
152
- 'file1 edited to look like file0 and file0 rename-edited to file2' \
153
- 'rm -f file0 file1 &&
154
- git read-tree -m $tree &&
155
- git checkout-index -f -u -a &&
156
- sed -e "s/git/GIT/" file0 >file1 &&
157
- sed -e "s/git/GET/" file0 >file2 &&
158
- rm -f file0 &&
159
- git update-index --add --remove file0 file1 file2'
160
-
161
-test_expect_success \
162
- 'run diff with -B' \
163
- 'git diff-index -B "$tree" >current'
164
-
165
-cat >expected <<\EOF
166
-:100644 000000 548142c327a6790ff8821d67c2ee1eff7a656b52 0000000000000000000000000000000000000000 D file0
167
-:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 2fbedd0b5d4b8126e4750c3bee305e8ff79f80ec M100 file1
168
-:000000 100644 0000000000000000000000000000000000000000 69a939f651686f56322566e2fd76715947a24162 A file2
169
-EOF
170
-
171
-test_expect_success \
172
- 'validate result of -B (#8)' \
173
- 'compare_diff_raw expected current'
174
-
175
-test_expect_success \
176
- 'run diff with -B -C' \
177
- 'git diff-index -B -C "$tree" >current'
178
-
179
-cat >expected <<\EOF
180
-:100644 100644 548142c327a6790ff8821d67c2ee1eff7a656b52 2fbedd0b5d4b8126e4750c3bee305e8ff79f80ec C095 file0 file1
181
-:100644 100644 548142c327a6790ff8821d67c2ee1eff7a656b52 69a939f651686f56322566e2fd76715947a24162 R095 file0 file2
182
-EOF
183
-
184
-test_expect_success \
185
- 'validate result of -B -M (#9)' \
186
- 'compare_diff_raw expected current'
27
+test_expect_success setup '
28
+ cat "$TEST_DIRECTORY"/diff-lib/README >file0 &&
29
+ cat "$TEST_DIRECTORY"/diff-lib/COPYING >file1 &&
30
+ git update-index --add file0 file1 &&
31
+ git tag reference $(git write-tree)
32
+'
33
+
34
+test_expect_success 'change file1 with copy-edit of file0 and remove file0' '
35
+ sed -e "s/git/GIT/" file0 >file1 &&
36
+ rm -f file0 &&
37
+ git update-index --remove file0 file1
38
+'
39
+
40
+test_expect_success 'run diff with -B (#1)' '
41
+ git diff-index -B --cached reference >current &&
42
+ cat >expect <<-\EOF &&
43
+ :100644 000000 548142c327a6790ff8821d67c2ee1eff7a656b52 0000000000000000000000000000000000000000 D file0
44
+ :100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 2fbedd0b5d4b8126e4750c3bee305e8ff79f80ec M100 file1
45
+ EOF
46
+ compare_diff_raw expect current
47
+'
48
+
49
+test_expect_success 'run diff with -B and -M (#2)' '
50
+ git diff-index -B -M reference >current &&
51
+ cat >expect <<-\EOF &&
52
+ :100644 100644 548142c327a6790ff8821d67c2ee1eff7a656b52 2fbedd0b5d4b8126e4750c3bee305e8ff79f80ec R100 file0 file1
53
+ EOF
54
+ compare_diff_raw expect current
55
+'
56
+
57
+test_expect_success 'swap file0 and file1' '
58
+ rm -f file0 file1 &&
59
+ git read-tree -m reference &&
60
+ git checkout-index -f -u -a &&
61
+ mv file0 tmp &&
62
+ mv file1 file0 &&
63
+ mv tmp file1 &&
64
+ git update-index file0 file1
65
+'
66
+
67
+test_expect_success 'run diff with -B (#3)' '
68
+ git diff-index -B reference >current &&
69
+ cat >expect <<-\EOF &&
70
+ :100644 100644 548142c327a6790ff8821d67c2ee1eff7a656b52 6ff87c4664981e4397625791c8ea3bbb5f2279a3 M100 file0
71
+ :100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 548142c327a6790ff8821d67c2ee1eff7a656b52 M100 file1
72
+ EOF
73
+ compare_diff_raw expect current
74
+'
75
+
76
+test_expect_success 'run diff with -B and -M (#4)' '
77
+ git diff-index -B -M reference >current &&
78
+ cat >expect <<-\EOF &&
79
+ :100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 6ff87c4664981e4397625791c8ea3bbb5f2279a3 R100 file1 file0
80
+ :100644 100644 548142c327a6790ff8821d67c2ee1eff7a656b52 548142c327a6790ff8821d67c2ee1eff7a656b52 R100 file0 file1
81
+ EOF
82
+ compare_diff_raw expect current
83
+'
84
+
85
+test_expect_success 'make file0 into something completely different' '
86
+ rm -f file0 &&
87
+ test_ln_s_add frotz file0 &&
88
+ git update-index file1
89
+'
90
+
91
+test_expect_success 'run diff with -B (#5)' '
92
+ git diff-index -B reference >current &&
93
+ cat >expect <<-\EOF &&
94
+ :100644 120000 548142c327a6790ff8821d67c2ee1eff7a656b52 67be421f88824578857624f7b3dc75e99a8a1481 T file0
95
+ :100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 548142c327a6790ff8821d67c2ee1eff7a656b52 M100 file1
96
+ EOF
97
+ compare_diff_raw expect current
98
+'
99
+
100
+test_expect_success 'run diff with -B -M (#6)' '
101
+ git diff-index -B -M reference >current &&
102
+
103
+ # file0 changed from regular to symlink. file1 is the same as the preimage
104
+ # of file0. Because the change does not make file0 disappear, file1 is
105
+ # denoted as a copy of file0
106
+ cat >expect <<-\EOF &&
107
+ :100644 120000 548142c327a6790ff8821d67c2ee1eff7a656b52 67be421f88824578857624f7b3dc75e99a8a1481 T file0
108
+ :100644 100644 548142c327a6790ff8821d67c2ee1eff7a656b52 548142c327a6790ff8821d67c2ee1eff7a656b52 C file0 file1
109
+ EOF
110
+ compare_diff_raw expect current
111
+'
112
+
113
+test_expect_success 'run diff with -M (#7)' '
114
+ git diff-index -M reference >current &&
115
+
116
+ # This should not mistake file0 as the copy source of new file1
117
+ # due to type differences.
118
+ cat >expect <<-\EOF &&
119
+ :100644 120000 548142c327a6790ff8821d67c2ee1eff7a656b52 67be421f88824578857624f7b3dc75e99a8a1481 T file0
120
+ :100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 548142c327a6790ff8821d67c2ee1eff7a656b52 M file1
121
+ EOF
122
+ compare_diff_raw expect current
123
+'
124
+
125
+test_expect_success 'file1 edited to look like file0 and file0 rename-edited to file2' '
126
+ rm -f file0 file1 &&
127
+ git read-tree -m reference &&
128
+ git checkout-index -f -u -a &&
129
+ sed -e "s/git/GIT/" file0 >file1 &&
130
+ sed -e "s/git/GET/" file0 >file2 &&
131
+ rm -f file0 &&
132
+ git update-index --add --remove file0 file1 file2
133
+'
134
+
135
+test_expect_success 'run diff with -B (#8)' '
136
+ git diff-index -B reference >current &&
137
+ cat >expect <<-\EOF &&
138
+ :100644 000000 548142c327a6790ff8821d67c2ee1eff7a656b52 0000000000000000000000000000000000000000 D file0
139
+ :100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 2fbedd0b5d4b8126e4750c3bee305e8ff79f80ec M100 file1
140
+ :000000 100644 0000000000000000000000000000000000000000 69a939f651686f56322566e2fd76715947a24162 A file2
141
+ EOF
142
+ compare_diff_raw expect current
143
+'
144
+
145
+test_expect_success 'run diff with -B -C (#9)' '
146
+ git diff-index -B -C reference >current &&
147
+ cat >expect <<-\EOF &&
148
+ :100644 100644 548142c327a6790ff8821d67c2ee1eff7a656b52 2fbedd0b5d4b8126e4750c3bee305e8ff79f80ec C095 file0 file1
149
+ :100644 100644 548142c327a6790ff8821d67c2ee1eff7a656b52 69a939f651686f56322566e2fd76715947a24162 R095 file0 file2
150
+ EOF
151
+ compare_diff_raw expect current
152
+'
153
154
test_done