]>
Commit | Line | Data |
---|---|---|
86140d56 JL |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2009 Jens Lehmann, based on t7401 by Ping Yin | |
4 | # | |
5 | ||
6 | test_description='Support for verbose submodule differences in git diff | |
7 | ||
8 | This test tries to verify the sanity of the --submodule option of git diff. | |
9 | ' | |
10 | ||
11 | . ./test-lib.sh | |
12 | ||
13 | add_file () { | |
2934975f RR |
14 | ( |
15 | cd "$1" && | |
16 | shift && | |
17 | for name | |
18 | do | |
19 | echo "$name" >"$name" && | |
20 | git add "$name" && | |
21 | test_tick && | |
22 | git commit -m "Add $name" || exit | |
23 | done >/dev/null && | |
24 | git rev-parse --short --verify HEAD | |
25 | ) | |
86140d56 JL |
26 | } |
27 | commit_file () { | |
28 | test_tick && | |
29 | git commit "$@" -m "Commit $*" >/dev/null | |
30 | } | |
31 | ||
32 | test_create_repo sm1 && | |
33 | add_file . foo >/dev/null | |
34 | ||
35 | head1=$(add_file sm1 foo1 foo2) | |
20fa5385 | 36 | fullhead1=$(cd sm1; git rev-parse --verify HEAD) |
86140d56 | 37 | |
a1549f9b | 38 | test_expect_success 'added submodule' ' |
86140d56 JL |
39 | git add sm1 && |
40 | git diff-index -p --submodule=log HEAD >actual && | |
f8d186bb | 41 | cat >expected <<-EOF && |
a1549f9b RR |
42 | Submodule sm1 0000000...$head1 (new submodule) |
43 | EOF | |
f8d186bb | 44 | test_cmp expected actual |
a1549f9b | 45 | ' |
86140d56 | 46 | |
a1549f9b | 47 | test_expect_success 'added submodule, set diff.submodule' ' |
c47ef57c RR |
48 | git config diff.submodule log && |
49 | git add sm1 && | |
50 | git diff --cached >actual && | |
51 | cat >expected <<-EOF && | |
a1549f9b RR |
52 | Submodule sm1 0000000...$head1 (new submodule) |
53 | EOF | |
c47ef57c RR |
54 | git config --unset diff.submodule && |
55 | test_cmp expected actual | |
a1549f9b | 56 | ' |
c47ef57c | 57 | |
a1549f9b | 58 | test_expect_success '--submodule=short overrides diff.submodule' ' |
c47ef57c RR |
59 | test_config diff.submodule log && |
60 | git add sm1 && | |
61 | git diff --submodule=short --cached >actual && | |
62 | cat >expected <<-EOF && | |
a1549f9b RR |
63 | diff --git a/sm1 b/sm1 |
64 | new file mode 160000 | |
65 | index 0000000..$head1 | |
66 | --- /dev/null | |
67 | +++ b/sm1 | |
68 | @@ -0,0 +1 @@ | |
69 | +Subproject commit $fullhead1 | |
70 | EOF | |
c47ef57c | 71 | test_cmp expected actual |
a1549f9b | 72 | ' |
c47ef57c | 73 | |
d9c552f1 JK |
74 | test_expect_success 'diff.submodule does not affect plumbing' ' |
75 | test_config diff.submodule log && | |
76 | git diff-index -p HEAD >actual && | |
77 | cat >expected <<-EOF && | |
78 | diff --git a/sm1 b/sm1 | |
79 | new file mode 160000 | |
3b13af9d | 80 | index 0000000..$head1 |
d9c552f1 JK |
81 | --- /dev/null |
82 | +++ b/sm1 | |
83 | @@ -0,0 +1 @@ | |
84 | +Subproject commit $fullhead1 | |
85 | EOF | |
86 | test_cmp expected actual | |
87 | ' | |
88 | ||
86140d56 JL |
89 | commit_file sm1 && |
90 | head2=$(add_file sm1 foo3) | |
91 | ||
a1549f9b | 92 | test_expect_success 'modified submodule(forward)' ' |
86140d56 | 93 | git diff-index -p --submodule=log HEAD >actual && |
f8d186bb | 94 | cat >expected <<-EOF && |
a1549f9b RR |
95 | Submodule sm1 $head1..$head2: |
96 | > Add foo3 | |
97 | EOF | |
f8d186bb | 98 | test_cmp expected actual |
a1549f9b | 99 | ' |
86140d56 | 100 | |
a1549f9b | 101 | test_expect_success 'modified submodule(forward)' ' |
86140d56 | 102 | git diff --submodule=log >actual && |
f8d186bb | 103 | cat >expected <<-EOF && |
a1549f9b RR |
104 | Submodule sm1 $head1..$head2: |
105 | > Add foo3 | |
106 | EOF | |
f8d186bb | 107 | test_cmp expected actual |
a1549f9b | 108 | ' |
86140d56 | 109 | |
a1549f9b | 110 | test_expect_success 'modified submodule(forward) --submodule' ' |
86140d56 | 111 | git diff --submodule >actual && |
f8d186bb | 112 | cat >expected <<-EOF && |
a1549f9b RR |
113 | Submodule sm1 $head1..$head2: |
114 | > Add foo3 | |
115 | EOF | |
f8d186bb | 116 | test_cmp expected actual |
a1549f9b | 117 | ' |
86140d56 | 118 | |
20fa5385 | 119 | fullhead2=$(cd sm1; git rev-parse --verify HEAD) |
a1549f9b | 120 | test_expect_success 'modified submodule(forward) --submodule=short' ' |
86140d56 | 121 | git diff --submodule=short >actual && |
f8d186bb | 122 | cat >expected <<-EOF && |
a1549f9b RR |
123 | diff --git a/sm1 b/sm1 |
124 | index $head1..$head2 160000 | |
125 | --- a/sm1 | |
126 | +++ b/sm1 | |
127 | @@ -1 +1 @@ | |
128 | -Subproject commit $fullhead1 | |
129 | +Subproject commit $fullhead2 | |
130 | EOF | |
f8d186bb | 131 | test_cmp expected actual |
a1549f9b | 132 | ' |
86140d56 JL |
133 | |
134 | commit_file sm1 && | |
18a82692 JN |
135 | head3=$( |
136 | cd sm1 && | |
137 | git reset --hard HEAD~2 >/dev/null && | |
20fa5385 | 138 | git rev-parse --short --verify HEAD |
fd4ec4f2 | 139 | ) |
86140d56 | 140 | |
a1549f9b | 141 | test_expect_success 'modified submodule(backward)' ' |
86140d56 | 142 | git diff-index -p --submodule=log HEAD >actual && |
f8d186bb | 143 | cat >expected <<-EOF && |
a1549f9b RR |
144 | Submodule sm1 $head2..$head3 (rewind): |
145 | < Add foo3 | |
146 | < Add foo2 | |
147 | EOF | |
f8d186bb | 148 | test_cmp expected actual |
a1549f9b | 149 | ' |
86140d56 | 150 | |
a1549f9b RR |
151 | head4=$(add_file sm1 foo4 foo5) |
152 | test_expect_success 'modified submodule(backward and forward)' ' | |
86140d56 | 153 | git diff-index -p --submodule=log HEAD >actual && |
f8d186bb | 154 | cat >expected <<-EOF && |
a1549f9b RR |
155 | Submodule sm1 $head2...$head4: |
156 | > Add foo5 | |
157 | > Add foo4 | |
158 | < Add foo3 | |
159 | < Add foo2 | |
160 | EOF | |
f8d186bb | 161 | test_cmp expected actual |
a1549f9b | 162 | ' |
86140d56 JL |
163 | |
164 | commit_file sm1 && | |
165 | mv sm1 sm1-bak && | |
166 | echo sm1 >sm1 && | |
167 | head5=$(git hash-object sm1 | cut -c1-7) && | |
168 | git add sm1 && | |
169 | rm -f sm1 && | |
170 | mv sm1-bak sm1 | |
171 | ||
a1549f9b | 172 | test_expect_success 'typechanged submodule(submodule->blob), --cached' ' |
86140d56 | 173 | git diff --submodule=log --cached >actual && |
f8d186bb | 174 | cat >expected <<-EOF && |
a1549f9b RR |
175 | Submodule sm1 $head4...0000000 (submodule deleted) |
176 | diff --git a/sm1 b/sm1 | |
177 | new file mode 100644 | |
178 | index 0000000..$head5 | |
179 | --- /dev/null | |
180 | +++ b/sm1 | |
181 | @@ -0,0 +1 @@ | |
182 | +sm1 | |
183 | EOF | |
f8d186bb | 184 | test_cmp expected actual |
a1549f9b | 185 | ' |
86140d56 | 186 | |
a1549f9b | 187 | test_expect_success 'typechanged submodule(submodule->blob)' ' |
86140d56 | 188 | git diff --submodule=log >actual && |
f8d186bb | 189 | cat >expected <<-EOF && |
a1549f9b RR |
190 | diff --git a/sm1 b/sm1 |
191 | deleted file mode 100644 | |
192 | index $head5..0000000 | |
193 | --- a/sm1 | |
194 | +++ /dev/null | |
195 | @@ -1 +0,0 @@ | |
196 | -sm1 | |
197 | Submodule sm1 0000000...$head4 (new submodule) | |
198 | EOF | |
f8d186bb | 199 | test_cmp expected actual |
a1549f9b | 200 | ' |
86140d56 JL |
201 | |
202 | rm -rf sm1 && | |
203 | git checkout-index sm1 | |
a1549f9b | 204 | test_expect_success 'typechanged submodule(submodule->blob)' ' |
86140d56 | 205 | git diff-index -p --submodule=log HEAD >actual && |
f8d186bb | 206 | cat >expected <<-EOF && |
a1549f9b RR |
207 | Submodule sm1 $head4...0000000 (submodule deleted) |
208 | diff --git a/sm1 b/sm1 | |
209 | new file mode 100644 | |
210 | index 0000000..$head5 | |
211 | --- /dev/null | |
212 | +++ b/sm1 | |
213 | @@ -0,0 +1 @@ | |
214 | +sm1 | |
215 | EOF | |
f8d186bb | 216 | test_cmp expected actual |
a1549f9b | 217 | ' |
86140d56 JL |
218 | |
219 | rm -f sm1 && | |
220 | test_create_repo sm1 && | |
221 | head6=$(add_file sm1 foo6 foo7) | |
20fa5385 | 222 | fullhead6=$(cd sm1; git rev-parse --verify HEAD) |
a1549f9b | 223 | test_expect_success 'nonexistent commit' ' |
86140d56 | 224 | git diff-index -p --submodule=log HEAD >actual && |
f8d186bb | 225 | cat >expected <<-EOF && |
a1549f9b RR |
226 | Submodule sm1 $head4...$head6 (commits not present) |
227 | EOF | |
f8d186bb | 228 | test_cmp expected actual |
a1549f9b | 229 | ' |
86140d56 JL |
230 | |
231 | commit_file | |
a1549f9b | 232 | test_expect_success 'typechanged submodule(blob->submodule)' ' |
86140d56 | 233 | git diff-index -p --submodule=log HEAD >actual && |
f8d186bb | 234 | cat >expected <<-EOF && |
a1549f9b RR |
235 | diff --git a/sm1 b/sm1 |
236 | deleted file mode 100644 | |
237 | index $head5..0000000 | |
238 | --- a/sm1 | |
239 | +++ /dev/null | |
240 | @@ -1 +0,0 @@ | |
241 | -sm1 | |
242 | Submodule sm1 0000000...$head6 (new submodule) | |
243 | EOF | |
f8d186bb | 244 | test_cmp expected actual |
a1549f9b | 245 | ' |
86140d56 JL |
246 | |
247 | commit_file sm1 && | |
a1549f9b | 248 | test_expect_success 'submodule is up to date' ' |
721ceec1 | 249 | git diff-index -p --submodule=log HEAD >actual && |
f8d186bb | 250 | cat >expected <<-EOF && |
a1549f9b | 251 | EOF |
f8d186bb | 252 | test_cmp expected actual |
a1549f9b | 253 | ' |
721ceec1 | 254 | |
a1549f9b | 255 | test_expect_success 'submodule contains untracked content' ' |
721ceec1 JL |
256 | echo new > sm1/new-file && |
257 | git diff-index -p --submodule=log HEAD >actual && | |
f8d186bb | 258 | cat >expected <<-EOF && |
a1549f9b RR |
259 | Submodule sm1 contains untracked content |
260 | EOF | |
f8d186bb | 261 | test_cmp expected actual |
a1549f9b | 262 | ' |
721ceec1 | 263 | |
a1549f9b | 264 | test_expect_success 'submodule contains untracked content (untracked ignored)' ' |
dd44d419 | 265 | git diff-index -p --ignore-submodules=untracked --submodule=log HEAD >actual && |
6ed7ddaa | 266 | ! test -s actual |
a1549f9b | 267 | ' |
dd44d419 | 268 | |
a1549f9b | 269 | test_expect_success 'submodule contains untracked content (dirty ignored)' ' |
dd44d419 | 270 | git diff-index -p --ignore-submodules=dirty --submodule=log HEAD >actual && |
6ed7ddaa | 271 | ! test -s actual |
a1549f9b | 272 | ' |
dd44d419 | 273 | |
a1549f9b | 274 | test_expect_success 'submodule contains untracked content (all ignored)' ' |
dd44d419 | 275 | git diff-index -p --ignore-submodules=all --submodule=log HEAD >actual && |
6ed7ddaa | 276 | ! test -s actual |
a1549f9b | 277 | ' |
dd44d419 | 278 | |
a1549f9b | 279 | test_expect_success 'submodule contains untracked and modifed content' ' |
721ceec1 JL |
280 | echo new > sm1/foo6 && |
281 | git diff-index -p --submodule=log HEAD >actual && | |
f8d186bb | 282 | cat >expected <<-EOF && |
a1549f9b RR |
283 | Submodule sm1 contains untracked content |
284 | Submodule sm1 contains modified content | |
285 | EOF | |
f8d186bb | 286 | test_cmp expected actual |
a1549f9b | 287 | ' |
721ceec1 | 288 | |
a1549f9b | 289 | test_expect_success 'submodule contains untracked and modifed content (untracked ignored)' ' |
dd44d419 JL |
290 | echo new > sm1/foo6 && |
291 | git diff-index -p --ignore-submodules=untracked --submodule=log HEAD >actual && | |
f8d186bb | 292 | cat >expected <<-EOF && |
a1549f9b RR |
293 | Submodule sm1 contains modified content |
294 | EOF | |
f8d186bb | 295 | test_cmp expected actual |
a1549f9b | 296 | ' |
dd44d419 | 297 | |
a1549f9b | 298 | test_expect_success 'submodule contains untracked and modifed content (dirty ignored)' ' |
dd44d419 JL |
299 | echo new > sm1/foo6 && |
300 | git diff-index -p --ignore-submodules=dirty --submodule=log HEAD >actual && | |
6ed7ddaa | 301 | ! test -s actual |
a1549f9b | 302 | ' |
dd44d419 | 303 | |
a1549f9b | 304 | test_expect_success 'submodule contains untracked and modifed content (all ignored)' ' |
dd44d419 JL |
305 | echo new > sm1/foo6 && |
306 | git diff-index -p --ignore-submodules --submodule=log HEAD >actual && | |
6ed7ddaa | 307 | ! test -s actual |
a1549f9b | 308 | ' |
dd44d419 | 309 | |
a1549f9b | 310 | test_expect_success 'submodule contains modifed content' ' |
721ceec1 JL |
311 | rm -f sm1/new-file && |
312 | git diff-index -p --submodule=log HEAD >actual && | |
f8d186bb | 313 | cat >expected <<-EOF && |
a1549f9b RR |
314 | Submodule sm1 contains modified content |
315 | EOF | |
f8d186bb | 316 | test_cmp expected actual |
a1549f9b | 317 | ' |
721ceec1 JL |
318 | |
319 | (cd sm1; git commit -mchange foo6 >/dev/null) && | |
20fa5385 | 320 | head8=$(cd sm1; git rev-parse --short --verify HEAD) && |
a1549f9b | 321 | test_expect_success 'submodule is modified' ' |
721ceec1 | 322 | git diff-index -p --submodule=log HEAD >actual && |
f8d186bb | 323 | cat >expected <<-EOF && |
a1549f9b RR |
324 | Submodule sm1 $head6..$head8: |
325 | > change | |
326 | EOF | |
f8d186bb | 327 | test_cmp expected actual |
a1549f9b | 328 | ' |
721ceec1 | 329 | |
a1549f9b | 330 | test_expect_success 'modified submodule contains untracked content' ' |
721ceec1 JL |
331 | echo new > sm1/new-file && |
332 | git diff-index -p --submodule=log HEAD >actual && | |
f8d186bb | 333 | cat >expected <<-EOF && |
a1549f9b RR |
334 | Submodule sm1 contains untracked content |
335 | Submodule sm1 $head6..$head8: | |
336 | > change | |
337 | EOF | |
f8d186bb | 338 | test_cmp expected actual |
a1549f9b | 339 | ' |
721ceec1 | 340 | |
a1549f9b | 341 | test_expect_success 'modified submodule contains untracked content (untracked ignored)' ' |
dd44d419 | 342 | git diff-index -p --ignore-submodules=untracked --submodule=log HEAD >actual && |
f8d186bb | 343 | cat >expected <<-EOF && |
a1549f9b RR |
344 | Submodule sm1 $head6..$head8: |
345 | > change | |
346 | EOF | |
f8d186bb | 347 | test_cmp expected actual |
a1549f9b | 348 | ' |
dd44d419 | 349 | |
a1549f9b | 350 | test_expect_success 'modified submodule contains untracked content (dirty ignored)' ' |
dd44d419 | 351 | git diff-index -p --ignore-submodules=dirty --submodule=log HEAD >actual && |
f8d186bb | 352 | cat >expected <<-EOF && |
a1549f9b RR |
353 | Submodule sm1 $head6..$head8: |
354 | > change | |
355 | EOF | |
f8d186bb | 356 | test_cmp expected actual |
a1549f9b | 357 | ' |
dd44d419 | 358 | |
a1549f9b | 359 | test_expect_success 'modified submodule contains untracked content (all ignored)' ' |
dd44d419 | 360 | git diff-index -p --ignore-submodules=all --submodule=log HEAD >actual && |
6ed7ddaa | 361 | ! test -s actual |
a1549f9b | 362 | ' |
dd44d419 | 363 | |
a1549f9b | 364 | test_expect_success 'modified submodule contains untracked and modifed content' ' |
721ceec1 JL |
365 | echo modification >> sm1/foo6 && |
366 | git diff-index -p --submodule=log HEAD >actual && | |
f8d186bb | 367 | cat >expected <<-EOF && |
a1549f9b RR |
368 | Submodule sm1 contains untracked content |
369 | Submodule sm1 contains modified content | |
370 | Submodule sm1 $head6..$head8: | |
371 | > change | |
372 | EOF | |
f8d186bb | 373 | test_cmp expected actual |
a1549f9b | 374 | ' |
721ceec1 | 375 | |
a1549f9b | 376 | test_expect_success 'modified submodule contains untracked and modifed content (untracked ignored)' ' |
dd44d419 JL |
377 | echo modification >> sm1/foo6 && |
378 | git diff-index -p --ignore-submodules=untracked --submodule=log HEAD >actual && | |
f8d186bb | 379 | cat >expected <<-EOF && |
a1549f9b RR |
380 | Submodule sm1 contains modified content |
381 | Submodule sm1 $head6..$head8: | |
382 | > change | |
383 | EOF | |
f8d186bb | 384 | test_cmp expected actual |
a1549f9b | 385 | ' |
dd44d419 | 386 | |
a1549f9b | 387 | test_expect_success 'modified submodule contains untracked and modifed content (dirty ignored)' ' |
dd44d419 JL |
388 | echo modification >> sm1/foo6 && |
389 | git diff-index -p --ignore-submodules=dirty --submodule=log HEAD >actual && | |
f8d186bb | 390 | cat >expected <<-EOF && |
a1549f9b RR |
391 | Submodule sm1 $head6..$head8: |
392 | > change | |
393 | EOF | |
f8d186bb | 394 | test_cmp expected actual |
a1549f9b | 395 | ' |
dd44d419 | 396 | |
a1549f9b | 397 | test_expect_success 'modified submodule contains untracked and modifed content (all ignored)' ' |
dd44d419 JL |
398 | echo modification >> sm1/foo6 && |
399 | git diff-index -p --ignore-submodules --submodule=log HEAD >actual && | |
6ed7ddaa | 400 | ! test -s actual |
a1549f9b | 401 | ' |
dd44d419 | 402 | |
a1549f9b | 403 | test_expect_success 'modified submodule contains modifed content' ' |
721ceec1 JL |
404 | rm -f sm1/new-file && |
405 | git diff-index -p --submodule=log HEAD >actual && | |
f8d186bb | 406 | cat >expected <<-EOF && |
a1549f9b RR |
407 | Submodule sm1 contains modified content |
408 | Submodule sm1 $head6..$head8: | |
409 | > change | |
410 | EOF | |
f8d186bb | 411 | test_cmp expected actual |
a1549f9b | 412 | ' |
721ceec1 | 413 | |
86140d56 | 414 | rm -rf sm1 |
a1549f9b | 415 | test_expect_success 'deleted submodule' ' |
86140d56 | 416 | git diff-index -p --submodule=log HEAD >actual && |
f8d186bb | 417 | cat >expected <<-EOF && |
a1549f9b RR |
418 | Submodule sm1 $head6...0000000 (submodule deleted) |
419 | EOF | |
f8d186bb | 420 | test_cmp expected actual |
a1549f9b | 421 | ' |
86140d56 JL |
422 | |
423 | test_create_repo sm2 && | |
424 | head7=$(add_file sm2 foo8 foo9) && | |
425 | git add sm2 | |
426 | ||
a1549f9b | 427 | test_expect_success 'multiple submodules' ' |
86140d56 | 428 | git diff-index -p --submodule=log HEAD >actual && |
f8d186bb | 429 | cat >expected <<-EOF && |
a1549f9b RR |
430 | Submodule sm1 $head6...0000000 (submodule deleted) |
431 | Submodule sm2 0000000...$head7 (new submodule) | |
432 | EOF | |
f8d186bb | 433 | test_cmp expected actual |
a1549f9b | 434 | ' |
86140d56 | 435 | |
a1549f9b | 436 | test_expect_success 'path filter' ' |
86140d56 | 437 | git diff-index -p --submodule=log HEAD sm2 >actual && |
f8d186bb | 438 | cat >expected <<-EOF && |
a1549f9b RR |
439 | Submodule sm2 0000000...$head7 (new submodule) |
440 | EOF | |
f8d186bb | 441 | test_cmp expected actual |
a1549f9b | 442 | ' |
86140d56 JL |
443 | |
444 | commit_file sm2 | |
a1549f9b | 445 | test_expect_success 'given commit' ' |
86140d56 | 446 | git diff-index -p --submodule=log HEAD^ >actual && |
f8d186bb | 447 | cat >expected <<-EOF && |
a1549f9b RR |
448 | Submodule sm1 $head6...0000000 (submodule deleted) |
449 | Submodule sm2 0000000...$head7 (new submodule) | |
450 | EOF | |
f8d186bb | 451 | test_cmp expected actual |
a1549f9b | 452 | ' |
86140d56 | 453 | |
a1549f9b | 454 | test_expect_success 'given commit --submodule' ' |
86140d56 | 455 | git diff-index -p --submodule HEAD^ >actual && |
f8d186bb | 456 | cat >expected <<-EOF && |
a1549f9b RR |
457 | Submodule sm1 $head6...0000000 (submodule deleted) |
458 | Submodule sm2 0000000...$head7 (new submodule) | |
459 | EOF | |
f8d186bb | 460 | test_cmp expected actual |
a1549f9b | 461 | ' |
86140d56 | 462 | |
20fa5385 | 463 | fullhead7=$(cd sm2; git rev-parse --verify HEAD) |
86140d56 | 464 | |
a1549f9b | 465 | test_expect_success 'given commit --submodule=short' ' |
86140d56 | 466 | git diff-index -p --submodule=short HEAD^ >actual && |
f8d186bb | 467 | cat >expected <<-EOF && |
a1549f9b RR |
468 | diff --git a/sm1 b/sm1 |
469 | deleted file mode 160000 | |
470 | index $head6..0000000 | |
471 | --- a/sm1 | |
472 | +++ /dev/null | |
473 | @@ -1 +0,0 @@ | |
474 | -Subproject commit $fullhead6 | |
475 | diff --git a/sm2 b/sm2 | |
476 | new file mode 160000 | |
477 | index 0000000..$head7 | |
478 | --- /dev/null | |
479 | +++ b/sm2 | |
480 | @@ -0,0 +1 @@ | |
481 | +Subproject commit $fullhead7 | |
482 | EOF | |
483 | test_cmp expected actual | |
484 | ' | |
86140d56 | 485 | |
eee49b6c JL |
486 | test_expect_success 'setup .git file for sm2' ' |
487 | (cd sm2 && | |
488 | REAL="$(pwd)/../.real" && | |
489 | mv .git "$REAL" | |
490 | echo "gitdir: $REAL" >.git) | |
491 | ' | |
492 | ||
493 | test_expect_success 'diff --submodule with .git file' ' | |
494 | git diff --submodule HEAD^ >actual && | |
f8d186bb | 495 | cat >expected <<-EOF && |
a1549f9b RR |
496 | Submodule sm1 $head6...0000000 (submodule deleted) |
497 | Submodule sm2 0000000...$head7 (new submodule) | |
498 | EOF | |
f8d186bb | 499 | test_cmp expected actual |
eee49b6c JL |
500 | ' |
501 | ||
5e73633d HV |
502 | test_expect_success 'diff --submodule with objects referenced by alternates' ' |
503 | mkdir sub_alt && | |
504 | (cd sub_alt && | |
505 | git init && | |
506 | echo a >a && | |
507 | git add a && | |
508 | git commit -m a | |
509 | ) && | |
510 | mkdir super && | |
511 | (cd super && | |
512 | git clone -s ../sub_alt sub && | |
513 | git init && | |
514 | git add sub && | |
515 | git commit -m "sub a" | |
516 | ) && | |
517 | (cd sub_alt && | |
518 | sha1_before=$(git rev-parse --short HEAD) | |
519 | echo b >b && | |
520 | git add b && | |
521 | git commit -m b | |
522 | sha1_after=$(git rev-parse --short HEAD) | |
523 | echo "Submodule sub $sha1_before..$sha1_after: | |
524 | > b" >../expected | |
525 | ) && | |
526 | (cd super && | |
527 | (cd sub && | |
528 | git fetch && | |
529 | git checkout origin/master | |
530 | ) && | |
531 | git diff --submodule > ../actual | |
532 | ) | |
533 | test_cmp expected actual | |
534 | ' | |
535 | ||
86140d56 | 536 | test_done |