@@ -10,34 +10,54 @@ export GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB
10
10
11
11
pwd=$( pwd)
12
12
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
+
13
39
# For each submodule in the test setup, this creates a commit and writes
14
40
# a file that contains the expected err if that new commit were fetched.
15
41
# These output files get concatenated in the right order by
16
42
# verify_fetch_result().
17
43
add_upstream_commit () {
18
44
(
19
45
cd submodule &&
20
- head1=$( git rev-parse --short HEAD) &&
21
46
echo new >> subfile &&
22
47
test_tick &&
23
48
git add subfile &&
24
49
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
29
52
) &&
30
53
(
31
54
cd deepsubmodule &&
32
- head1=$( git rev-parse --short HEAD) &&
33
55
echo new >> deepsubfile &&
34
56
test_tick &&
35
57
git add deepsubfile &&
36
58
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
41
61
)
42
62
}
43
63
@@ -62,7 +82,8 @@ verify_fetch_result () {
62
82
then
63
83
cat expect.err.deep >> expect.err.combined
64
84
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
66
87
}
67
88
68
89
test_expect_success setup '
@@ -274,12 +295,10 @@ test_expect_success "Recursion doesn't happen when no new commits are fetched in
274
295
'
275
296
276
297
test_expect_success " Recursion stops when no new submodule commits are fetched" '
277
- head1=$(git rev-parse --short HEAD) &&
278
298
git add submodule &&
279
299
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 &&
283
302
rm expect.err.deep &&
284
303
(
285
304
cd downstream &&
@@ -291,13 +310,11 @@ test_expect_success "Recursion stops when no new submodule commits are fetched"
291
310
292
311
test_expect_success " Recursion doesn't happen when new superproject commits don't change any submodules" '
293
312
add_upstream_commit &&
294
- head1=$(git rev-parse --short HEAD) &&
295
313
echo a > file &&
296
314
git add file &&
297
315
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 &&
301
318
rm expect.err.sub &&
302
319
rm expect.err.deep &&
303
320
(
@@ -318,12 +335,10 @@ test_expect_success "Recursion picks up config in submodule" '
318
335
)
319
336
) &&
320
337
add_upstream_commit &&
321
- head1=$(git rev-parse --short HEAD) &&
322
338
git add submodule &&
323
339
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 &&
327
342
(
328
343
cd downstream &&
329
344
git fetch >../actual.out 2>../actual.err &&
@@ -345,20 +360,15 @@ test_expect_success "Recursion picks up all submodules when necessary" '
345
360
git fetch &&
346
361
git checkout -q FETCH_HEAD
347
362
) &&
348
- head1=$(git rev-parse --short HEAD^) &&
349
363
git add subdir/deepsubmodule &&
350
364
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
355
367
) &&
356
- head1=$(git rev-parse --short HEAD) &&
357
368
git add submodule &&
358
369
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 &&
362
372
(
363
373
cd downstream &&
364
374
git fetch >../actual.out 2>../actual.err
@@ -376,13 +386,10 @@ test_expect_success "'--recurse-submodules=on-demand' doesn't recurse when no ne
376
386
git fetch &&
377
387
git checkout -q FETCH_HEAD
378
388
) &&
379
- head1=$(git rev-parse --short HEAD^) &&
380
389
git add subdir/deepsubmodule &&
381
390
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
386
393
) &&
387
394
(
388
395
cd downstream &&
@@ -395,12 +402,10 @@ test_expect_success "'--recurse-submodules=on-demand' doesn't recurse when no ne
395
402
'
396
403
397
404
test_expect_success " '--recurse-submodules=on-demand' recurses as deep as necessary (and ignores config)" '
398
- head1=$(git rev-parse --short HEAD) &&
399
405
git add submodule &&
400
406
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 &&
404
409
(
405
410
cd downstream &&
406
411
git config fetch.recurseSubmodules false &&
@@ -421,13 +426,11 @@ test_expect_success "'--recurse-submodules=on-demand' recurses as deep as necess
421
426
422
427
test_expect_success " '--recurse-submodules=on-demand' stops when no new submodule commits are found in the superproject (and ignores config)" '
423
428
add_upstream_commit &&
424
- head1=$(git rev-parse --short HEAD) &&
425
429
echo a >> file &&
426
430
git add file &&
427
431
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 &&
431
434
rm expect.err.sub &&
432
435
rm expect.err.deep &&
433
436
(
@@ -445,12 +448,10 @@ test_expect_success "'fetch.recurseSubmodules=on-demand' overrides global config
445
448
) &&
446
449
add_upstream_commit &&
447
450
git config --global fetch.recurseSubmodules false &&
448
- head1=$(git rev-parse --short HEAD) &&
449
451
git add submodule &&
450
452
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 &&
454
455
rm expect.err.deep &&
455
456
(
456
457
cd downstream &&
@@ -473,12 +474,10 @@ test_expect_success "'submodule.<sub>.fetchRecurseSubmodules=on-demand' override
473
474
) &&
474
475
add_upstream_commit &&
475
476
git config fetch.recurseSubmodules false &&
476
- head1=$(git rev-parse --short HEAD) &&
477
477
git add submodule &&
478
478
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 &&
482
481
rm expect.err.deep &&
483
482
(
484
483
cd downstream &&
@@ -499,12 +498,10 @@ test_expect_success "don't fetch submodule when newly recorded commits are alrea
499
498
cd submodule &&
500
499
git checkout -q HEAD^^
501
500
) &&
502
- head1=$(git rev-parse --short HEAD) &&
503
501
git add submodule &&
504
502
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 &&
508
505
rm expect.err.sub &&
509
506
# This file does not exist, but rm -f for readability
510
507
rm -f expect.err.deep &&
@@ -526,13 +523,11 @@ test_expect_success "'fetch.recurseSubmodules=on-demand' works also without .git
526
523
git fetch --recurse-submodules
527
524
) &&
528
525
add_upstream_commit &&
529
- head1=$(git rev-parse --short HEAD) &&
530
526
git add submodule &&
531
527
git rm .gitmodules &&
532
528
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 &&
536
531
rm expect.err.deep &&
537
532
(
538
533
cd downstream &&
0 commit comments