Skip to content

Commit 6e94bd6

Browse files
chooglengitster
authored andcommitted
t5526: stop asserting on stderr literally
In the previous commit message, we noted that not all of the "git fetch" stderr is relevant to the tests. Most of the test setup lines are dedicated to these details of the stderr: 1. which repos (super/sub/deep) are involved in the fetch 2. the head of the remote-tracking branch before the fetch (i.e. $head1) 3. the head of the remote-tracking branch after the fetch (i.e. $head2) 1. and 3. are relevant because they tell us that the expected commit is fetched by the expected repo, but 2. is completely irrelevant. Stop asserting on $head1 by replacing it with a dummy value in the actual and expected output. Do this by introducing test helpers (write_expected_*()) that make it easier to construct the expected output, and use sed to munge the actual output. Signed-off-by: Glen Choo <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent f3117df commit 6e94bd6

File tree

1 file changed

+56
-61
lines changed

1 file changed

+56
-61
lines changed

t/t5526-fetch-submodules.sh

Lines changed: 56 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -10,34 +10,54 @@ export GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB
1010

1111
pwd=$(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().
1743
add_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

6889
test_expect_success setup '
@@ -274,12 +295,10 @@ test_expect_success "Recursion doesn't happen when no new commits are fetched in
274295
'
275296

276297
test_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

292311
test_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

397404
test_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

422427
test_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

Comments
 (0)