@@ -10,34 +10,54 @@ export GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB
1010
1111pwd=$( pwd)
1212
13+ write_expected_sub () {
14+ NEW_HEAD=$1 &&
15+ cat > " $pwd /expect.err.sub" << -EOF
16+ Fetching submodule submodule
17+ From $pwd /submodule
18+ OLD_HEAD..$NEW_HEAD sub -> origin/sub
19+ EOF
20+ }
21+
22+ write_expected_deep () {
23+ NEW_HEAD=$1 &&
24+ cat > " $pwd /expect.err.deep" << -EOF
25+ Fetching submodule submodule/subdir/deepsubmodule
26+ From $pwd /deepsubmodule
27+ OLD_HEAD..$NEW_HEAD deep -> origin/deep
28+ EOF
29+ }
30+
31+ write_expected_super () {
32+ NEW_HEAD=$1 &&
33+ cat > " $pwd /expect.err.super" << -EOF
34+ From $pwd /.
35+ OLD_HEAD..$NEW_HEAD super -> origin/super
36+ EOF
37+ }
38+
1339# For each submodule in the test setup, this creates a commit and writes
1440# a file that contains the expected err if that new commit were fetched.
1541# These output files get concatenated in the right order by
1642# verify_fetch_result().
1743add_upstream_commit () {
1844 (
1945 cd submodule &&
20- head1=$( git rev-parse --short HEAD) &&
2146 echo new >> subfile &&
2247 test_tick &&
2348 git add subfile &&
2449 git commit -m new subfile &&
25- head2=$( git rev-parse --short HEAD) &&
26- echo " Fetching submodule submodule" > ../expect.err.sub &&
27- echo " From $pwd /submodule" >> ../expect.err.sub &&
28- echo " $head1 ..$head2 sub -> origin/sub" >> ../expect.err.sub
50+ new_head=$( git rev-parse --short HEAD) &&
51+ write_expected_sub $new_head
2952 ) &&
3053 (
3154 cd deepsubmodule &&
32- head1=$( git rev-parse --short HEAD) &&
3355 echo new >> deepsubfile &&
3456 test_tick &&
3557 git add deepsubfile &&
3658 git commit -m new deepsubfile &&
37- head2=$( git rev-parse --short HEAD) &&
38- echo " Fetching submodule submodule/subdir/deepsubmodule" > ../expect.err.deep
39- echo " From $pwd /deepsubmodule" >> ../expect.err.deep &&
40- echo " $head1 ..$head2 deep -> origin/deep" >> ../expect.err.deep
59+ new_head=$( git rev-parse --short HEAD) &&
60+ write_expected_deep $new_head
4161 )
4262}
4363
@@ -62,7 +82,8 @@ verify_fetch_result () {
6282 then
6383 cat expect.err.deep >> expect.err.combined
6484 fi &&
65- test_cmp expect.err.combined $ACTUAL_ERR
85+ sed -e ' s/[0-9a-f][0-9a-f]*\.\./OLD_HEAD\.\./' " $ACTUAL_ERR " > actual.err.cmp &&
86+ test_cmp expect.err.combined actual.err.cmp
6687}
6788
6889test_expect_success setup '
@@ -274,12 +295,10 @@ test_expect_success "Recursion doesn't happen when no new commits are fetched in
274295'
275296
276297test_expect_success " Recursion stops when no new submodule commits are fetched" '
277- head1=$(git rev-parse --short HEAD) &&
278298 git add submodule &&
279299 git commit -m "new submodule" &&
280- head2=$(git rev-parse --short HEAD) &&
281- echo "From $pwd/." > expect.err.super &&
282- echo " $head1..$head2 super -> origin/super" >>expect.err.super &&
300+ new_head=$(git rev-parse --short HEAD) &&
301+ write_expected_super $new_head &&
283302 rm expect.err.deep &&
284303 (
285304 cd downstream &&
@@ -291,13 +310,11 @@ test_expect_success "Recursion stops when no new submodule commits are fetched"
291310
292311test_expect_success " Recursion doesn't happen when new superproject commits don't change any submodules" '
293312 add_upstream_commit &&
294- head1=$(git rev-parse --short HEAD) &&
295313 echo a > file &&
296314 git add file &&
297315 git commit -m "new file" &&
298- head2=$(git rev-parse --short HEAD) &&
299- echo "From $pwd/." > expect.err.super &&
300- echo " $head1..$head2 super -> origin/super" >> expect.err.super &&
316+ new_head=$(git rev-parse --short HEAD) &&
317+ write_expected_super $new_head &&
301318 rm expect.err.sub &&
302319 rm expect.err.deep &&
303320 (
@@ -318,12 +335,10 @@ test_expect_success "Recursion picks up config in submodule" '
318335 )
319336 ) &&
320337 add_upstream_commit &&
321- head1=$(git rev-parse --short HEAD) &&
322338 git add submodule &&
323339 git commit -m "new submodule" &&
324- head2=$(git rev-parse --short HEAD) &&
325- echo "From $pwd/." > expect.err.super &&
326- echo " $head1..$head2 super -> origin/super" >> expect.err.super &&
340+ new_head=$(git rev-parse --short HEAD) &&
341+ write_expected_super $new_head &&
327342 (
328343 cd downstream &&
329344 git fetch >../actual.out 2>../actual.err &&
@@ -345,20 +360,15 @@ test_expect_success "Recursion picks up all submodules when necessary" '
345360 git fetch &&
346361 git checkout -q FETCH_HEAD
347362 ) &&
348- head1=$(git rev-parse --short HEAD^) &&
349363 git add subdir/deepsubmodule &&
350364 git commit -m "new deepsubmodule" &&
351- head2=$(git rev-parse --short HEAD) &&
352- echo "Fetching submodule submodule" > ../expect.err.sub &&
353- echo "From $pwd/submodule" >> ../expect.err.sub &&
354- echo " $head1..$head2 sub -> origin/sub" >> ../expect.err.sub
365+ new_head=$(git rev-parse --short HEAD) &&
366+ write_expected_sub $new_head
355367 ) &&
356- head1=$(git rev-parse --short HEAD) &&
357368 git add submodule &&
358369 git commit -m "new submodule" &&
359- head2=$(git rev-parse --short HEAD) &&
360- echo "From $pwd/." > expect.err.super &&
361- echo " $head1..$head2 super -> origin/super" >> expect.err.super &&
370+ new_head=$(git rev-parse --short HEAD) &&
371+ write_expected_super $new_head &&
362372 (
363373 cd downstream &&
364374 git fetch >../actual.out 2>../actual.err
@@ -376,13 +386,10 @@ test_expect_success "'--recurse-submodules=on-demand' doesn't recurse when no ne
376386 git fetch &&
377387 git checkout -q FETCH_HEAD
378388 ) &&
379- head1=$(git rev-parse --short HEAD^) &&
380389 git add subdir/deepsubmodule &&
381390 git commit -m "new deepsubmodule" &&
382- head2=$(git rev-parse --short HEAD) &&
383- echo Fetching submodule submodule > ../expect.err.sub &&
384- echo "From $pwd/submodule" >> ../expect.err.sub &&
385- echo " $head1..$head2 sub -> origin/sub" >> ../expect.err.sub
391+ new_head=$(git rev-parse --short HEAD) &&
392+ write_expected_sub $new_head
386393 ) &&
387394 (
388395 cd downstream &&
@@ -395,12 +402,10 @@ test_expect_success "'--recurse-submodules=on-demand' doesn't recurse when no ne
395402'
396403
397404test_expect_success " '--recurse-submodules=on-demand' recurses as deep as necessary (and ignores config)" '
398- head1=$(git rev-parse --short HEAD) &&
399405 git add submodule &&
400406 git commit -m "new submodule" &&
401- head2=$(git rev-parse --short HEAD) &&
402- echo "From $pwd/." > expect.err.super &&
403- echo " $head1..$head2 super -> origin/super" >>expect.err.super &&
407+ new_head=$(git rev-parse --short HEAD) &&
408+ write_expected_super $new_head &&
404409 (
405410 cd downstream &&
406411 git config fetch.recurseSubmodules false &&
@@ -421,13 +426,11 @@ test_expect_success "'--recurse-submodules=on-demand' recurses as deep as necess
421426
422427test_expect_success " '--recurse-submodules=on-demand' stops when no new submodule commits are found in the superproject (and ignores config)" '
423428 add_upstream_commit &&
424- head1=$(git rev-parse --short HEAD) &&
425429 echo a >> file &&
426430 git add file &&
427431 git commit -m "new file" &&
428- head2=$(git rev-parse --short HEAD) &&
429- echo "From $pwd/." > expect.err.super &&
430- echo " $head1..$head2 super -> origin/super" >> expect.err.super &&
432+ new_head=$(git rev-parse --short HEAD) &&
433+ write_expected_super $new_head &&
431434 rm expect.err.sub &&
432435 rm expect.err.deep &&
433436 (
@@ -445,12 +448,10 @@ test_expect_success "'fetch.recurseSubmodules=on-demand' overrides global config
445448 ) &&
446449 add_upstream_commit &&
447450 git config --global fetch.recurseSubmodules false &&
448- head1=$(git rev-parse --short HEAD) &&
449451 git add submodule &&
450452 git commit -m "new submodule" &&
451- head2=$(git rev-parse --short HEAD) &&
452- echo "From $pwd/." > expect.err.super &&
453- echo " $head1..$head2 super -> origin/super" >>expect.err.super &&
453+ new_head=$(git rev-parse --short HEAD) &&
454+ write_expected_super $new_head &&
454455 rm expect.err.deep &&
455456 (
456457 cd downstream &&
@@ -473,12 +474,10 @@ test_expect_success "'submodule.<sub>.fetchRecurseSubmodules=on-demand' override
473474 ) &&
474475 add_upstream_commit &&
475476 git config fetch.recurseSubmodules false &&
476- head1=$(git rev-parse --short HEAD) &&
477477 git add submodule &&
478478 git commit -m "new submodule" &&
479- head2=$(git rev-parse --short HEAD) &&
480- echo "From $pwd/." > expect.err.super &&
481- echo " $head1..$head2 super -> origin/super" >>expect.err.super &&
479+ new_head=$(git rev-parse --short HEAD) &&
480+ write_expected_super $new_head &&
482481 rm expect.err.deep &&
483482 (
484483 cd downstream &&
@@ -499,12 +498,10 @@ test_expect_success "don't fetch submodule when newly recorded commits are alrea
499498 cd submodule &&
500499 git checkout -q HEAD^^
501500 ) &&
502- head1=$(git rev-parse --short HEAD) &&
503501 git add submodule &&
504502 git commit -m "submodule rewound" &&
505- head2=$(git rev-parse --short HEAD) &&
506- echo "From $pwd/." > expect.err.super &&
507- echo " $head1..$head2 super -> origin/super" >> expect.err.super &&
503+ new_head=$(git rev-parse --short HEAD) &&
504+ write_expected_super $new_head &&
508505 rm expect.err.sub &&
509506 # This file does not exist, but rm -f for readability
510507 rm -f expect.err.deep &&
@@ -526,13 +523,11 @@ test_expect_success "'fetch.recurseSubmodules=on-demand' works also without .git
526523 git fetch --recurse-submodules
527524 ) &&
528525 add_upstream_commit &&
529- head1=$(git rev-parse --short HEAD) &&
530526 git add submodule &&
531527 git rm .gitmodules &&
532528 git commit -m "new submodule without .gitmodules" &&
533- head2=$(git rev-parse --short HEAD) &&
534- echo "From $pwd/." >expect.err.super &&
535- echo " $head1..$head2 super -> origin/super" >>expect.err.super &&
529+ new_head=$(git rev-parse --short HEAD) &&
530+ write_expected_super $new_head &&
536531 rm expect.err.deep &&
537532 (
538533 cd downstream &&
0 commit comments