Skip to content

Commit fdf3a27

Browse files
committed
Merge branch 'jx/t5411-unique-filenames'
Avoid individual tests in t5411 from getting affected by each other by forcing them to use separate output files during the test. * jx/t5411-unique-filenames: t5411: refactor check of refs using test_cmp_refs t5411: use different out file to prevent overwriting
2 parents 9e634a9 + 822ee89 commit fdf3a27

31 files changed

+224
-362
lines changed

t/t5411/common-functions.sh

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,18 @@ filter_out_user_friendly_and_stable_output () {
5858
make_user_friendly_and_stable_output |
5959
sed -n ${1+"$@"}
6060
}
61+
62+
test_cmp_refs () {
63+
indir=
64+
if test "$1" = "-C"
65+
then
66+
shift
67+
indir="$1"
68+
shift
69+
fi
70+
indir=${indir:+"$indir"/}
71+
cat >show-ref.expect &&
72+
git ${indir:+ -C "$indir"} show-ref >show-ref.pristine &&
73+
make_user_friendly_and_stable_output <show-ref.pristine >show-ref.filtered &&
74+
test_cmp show-ref.expect show-ref.filtered
75+
}

t/t5411/once-0010-report-status-v1.sh

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,9 @@ test_expect_success "proc-receive: report status v1" '
8383
EOF
8484
test_cmp expect actual &&
8585
86-
git -C "$upstream" show-ref >out &&
87-
make_user_friendly_and_stable_output <out >actual &&
88-
cat >expect <<-EOF &&
86+
test_cmp_refs -C "$upstream" <<-EOF
8987
<COMMIT-A> refs/for/main/topic1
9088
<COMMIT-A> refs/heads/foo
9189
<COMMIT-B> refs/heads/main
9290
EOF
93-
test_cmp expect actual
9491
'

t/t5411/test-0000-standard-git-push.sh

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,11 @@ test_expect_success "git-push ($PROTOCOL)" '
1919
* [new branch] HEAD -> next
2020
EOF
2121
test_cmp expect actual &&
22-
git -C "$upstream" show-ref >out &&
23-
make_user_friendly_and_stable_output <out >actual &&
24-
cat >expect <<-EOF &&
22+
23+
test_cmp_refs -C "$upstream" <<-EOF
2524
<COMMIT-B> refs/heads/main
2625
<COMMIT-A> refs/heads/next
2726
EOF
28-
test_cmp expect actual
2927
'
3028

3129
# Refs of upstream : main(B) next(A)
@@ -35,24 +33,22 @@ test_expect_success "git-push --atomic ($PROTOCOL)" '
3533
test_must_fail git -C workbench push --atomic origin \
3634
main \
3735
$B:refs/heads/next \
38-
>out 2>&1 &&
36+
>out-$test_count 2>&1 &&
3937
filter_out_user_friendly_and_stable_output \
4038
-e "/^To / { p; }" \
4139
-e "/^ ! / { p; }" \
42-
<out >actual &&
40+
<out-$test_count >actual &&
4341
cat >expect <<-EOF &&
4442
To <URL/of/upstream.git>
4543
! [rejected] main -> main (non-fast-forward)
4644
! [rejected] <COMMIT-B> -> next (atomic push failed)
4745
EOF
4846
test_cmp expect actual &&
49-
git -C "$upstream" show-ref >out &&
50-
make_user_friendly_and_stable_output <out >actual &&
51-
cat >expect <<-EOF &&
47+
48+
test_cmp_refs -C "$upstream" <<-EOF
5249
<COMMIT-B> refs/heads/main
5350
<COMMIT-A> refs/heads/next
5451
EOF
55-
test_cmp expect actual
5652
'
5753

5854
# Refs of upstream : main(B) next(A)
@@ -65,8 +61,8 @@ test_expect_success "non-fast-forward git-push ($PROTOCOL)" '
6561
push origin \
6662
main \
6763
$B:refs/heads/next \
68-
>out 2>&1 &&
69-
make_user_friendly_and_stable_output <out >actual &&
64+
>out-$test_count 2>&1 &&
65+
make_user_friendly_and_stable_output <out-$test_count >actual &&
7066
cat >expect <<-EOF &&
7167
remote: # pre-receive hook
7268
remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/next
@@ -77,13 +73,11 @@ test_expect_success "non-fast-forward git-push ($PROTOCOL)" '
7773
! [rejected] main -> main (non-fast-forward)
7874
EOF
7975
test_cmp expect actual &&
80-
git -C "$upstream" show-ref >out &&
81-
make_user_friendly_and_stable_output <out >actual &&
82-
cat >expect <<-EOF &&
76+
77+
test_cmp_refs -C "$upstream" <<-EOF
8378
<COMMIT-B> refs/heads/main
8479
<COMMIT-B> refs/heads/next
8580
EOF
86-
test_cmp expect actual
8781
'
8882

8983
# Refs of upstream : main(B) next(B)
@@ -119,15 +113,13 @@ test_expect_success "git-push -f ($PROTOCOL)" '
119113
* [new branch] HEAD -> a/b/c
120114
EOF
121115
test_cmp expect actual &&
122-
git -C "$upstream" show-ref >out &&
123-
make_user_friendly_and_stable_output <out >actual &&
124-
cat >expect <<-EOF &&
116+
117+
test_cmp_refs -C "$upstream" <<-EOF
125118
<COMMIT-A> refs/heads/a/b/c
126119
<COMMIT-A> refs/heads/main
127120
<COMMIT-A> refs/review/main/topic
128121
<TAG-v123> refs/tags/v123
129122
EOF
130-
test_cmp expect actual
131123
'
132124

133125
# Refs of upstream : main(A) tags/v123 refs/review/main/topic(A) a/b/c(A)

t/t5411/test-0001-standard-git-push--porcelain.sh

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,11 @@ test_expect_success "git-push ($PROTOCOL/porcelain)" '
2020
Done
2121
EOF
2222
test_cmp expect actual &&
23-
git -C "$upstream" show-ref >out &&
24-
make_user_friendly_and_stable_output <out >actual &&
25-
cat >expect <<-EOF &&
23+
24+
test_cmp_refs -C "$upstream" <<-EOF
2625
<COMMIT-B> refs/heads/main
2726
<COMMIT-A> refs/heads/next
2827
EOF
29-
test_cmp expect actual
3028
'
3129

3230
# Refs of upstream : main(B) next(A)
@@ -36,25 +34,23 @@ test_expect_success "git-push --atomic ($PROTOCOL/porcelain)" '
3634
test_must_fail git -C workbench push --atomic --porcelain origin \
3735
main \
3836
$B:refs/heads/next \
39-
>out 2>&1 &&
37+
>out-$test_count 2>&1 &&
4038
filter_out_user_friendly_and_stable_output \
4139
-e "s/^# GETTEXT POISON #//" \
4240
-e "/^To / { p; }" \
4341
-e "/^! / { p; }" \
44-
<out >actual &&
42+
<out-$test_count >actual &&
4543
cat >expect <<-EOF &&
4644
To <URL/of/upstream.git>
4745
! refs/heads/main:refs/heads/main [rejected] (non-fast-forward)
4846
! <COMMIT-B>:refs/heads/next [rejected] (atomic push failed)
4947
EOF
5048
test_cmp expect actual &&
51-
git -C "$upstream" show-ref >out &&
52-
make_user_friendly_and_stable_output <out >actual &&
53-
cat >expect <<-EOF &&
49+
50+
test_cmp_refs -C "$upstream" <<-EOF
5451
<COMMIT-B> refs/heads/main
5552
<COMMIT-A> refs/heads/next
5653
EOF
57-
test_cmp expect actual
5854
'
5955

6056
# Refs of upstream : main(B) next(A)
@@ -67,8 +63,8 @@ test_expect_success "non-fast-forward git-push ($PROTOCOL/porcelain)" '
6763
push --porcelain origin \
6864
main \
6965
$B:refs/heads/next \
70-
>out 2>&1 &&
71-
make_user_friendly_and_stable_output <out >actual &&
66+
>out-$test_count 2>&1 &&
67+
make_user_friendly_and_stable_output <out-$test_count >actual &&
7268
cat >expect <<-EOF &&
7369
remote: # pre-receive hook
7470
remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/next
@@ -80,13 +76,11 @@ test_expect_success "non-fast-forward git-push ($PROTOCOL/porcelain)" '
8076
Done
8177
EOF
8278
test_cmp expect actual &&
83-
git -C "$upstream" show-ref >out &&
84-
make_user_friendly_and_stable_output <out >actual &&
85-
cat >expect <<-EOF &&
79+
80+
test_cmp_refs -C "$upstream" <<-EOF
8681
<COMMIT-B> refs/heads/main
8782
<COMMIT-B> refs/heads/next
8883
EOF
89-
test_cmp expect actual
9084
'
9185

9286
# Refs of upstream : main(B) next(B)
@@ -123,15 +117,13 @@ test_expect_success "git-push -f ($PROTOCOL/porcelain)" '
123117
Done
124118
EOF
125119
test_cmp expect actual &&
126-
git -C "$upstream" show-ref >out &&
127-
make_user_friendly_and_stable_output <out >actual &&
128-
cat >expect <<-EOF &&
120+
121+
test_cmp_refs -C "$upstream" <<-EOF
129122
<COMMIT-A> refs/heads/a/b/c
130123
<COMMIT-A> refs/heads/main
131124
<COMMIT-A> refs/review/main/topic
132125
<TAG-v123> refs/tags/v123
133126
EOF
134-
test_cmp expect actual
135127
'
136128

137129
# Refs of upstream : main(A) tags/v123 refs/review/main/topic(A) a/b/c(A)

t/t5411/test-0002-pre-receive-declined.sh

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,18 @@ test_expect_success "git-push is declined ($PROTOCOL)" '
1212
test_must_fail git -C workbench push origin \
1313
$B:refs/heads/main \
1414
HEAD:refs/heads/next \
15-
>out 2>&1 &&
16-
make_user_friendly_and_stable_output <out >actual &&
15+
>out-$test_count 2>&1 &&
16+
make_user_friendly_and_stable_output <out-$test_count >actual &&
1717
cat >expect <<-EOF &&
1818
To <URL/of/upstream.git>
1919
! [remote rejected] <COMMIT-B> -> main (pre-receive hook declined)
2020
! [remote rejected] HEAD -> next (pre-receive hook declined)
2121
EOF
2222
test_cmp expect actual &&
23-
git -C "$upstream" show-ref >out &&
24-
make_user_friendly_and_stable_output <out >actual &&
25-
cat >expect <<-EOF &&
23+
24+
test_cmp_refs -C "$upstream" <<-EOF
2625
<COMMIT-A> refs/heads/main
2726
EOF
28-
test_cmp expect actual
2927
'
3028

3129
test_expect_success "cleanup ($PROTOCOL)" '

t/t5411/test-0003-pre-receive-declined--porcelain.sh

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,19 @@ test_expect_success "git-push is declined ($PROTOCOL/porcelain)" '
1212
test_must_fail git -C workbench push --porcelain origin \
1313
$B:refs/heads/main \
1414
HEAD:refs/heads/next \
15-
>out 2>&1 &&
16-
make_user_friendly_and_stable_output <out >actual &&
15+
>out-$test_count 2>&1 &&
16+
make_user_friendly_and_stable_output <out-$test_count >actual &&
1717
cat >expect <<-EOF &&
1818
To <URL/of/upstream.git>
1919
! <COMMIT-B>:refs/heads/main [remote rejected] (pre-receive hook declined)
2020
! HEAD:refs/heads/next [remote rejected] (pre-receive hook declined)
2121
Done
2222
EOF
2323
test_cmp expect actual &&
24-
git -C "$upstream" show-ref >out &&
25-
make_user_friendly_and_stable_output <out >actual &&
26-
cat >expect <<-EOF &&
24+
25+
test_cmp_refs -C "$upstream" <<-EOF
2726
<COMMIT-A> refs/heads/main
2827
EOF
29-
test_cmp expect actual
3028
'
3129

3230
test_expect_success "cleanup ($PROTOCOL/porcelain)" '

t/t5411/test-0011-no-hook-error.sh

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ test_expect_success "proc-receive: no hook, fail to push special ref ($PROTOCOL)
55
test_must_fail git -C workbench push origin \
66
HEAD:next \
77
HEAD:refs/for/main/topic \
8-
>out 2>&1 &&
9-
make_user_friendly_and_stable_output <out >actual &&
8+
>out-$test_count 2>&1 &&
9+
make_user_friendly_and_stable_output <out-$test_count >actual &&
1010
cat >expect <<-EOF &&
1111
remote: # pre-receive hook
1212
remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
@@ -19,13 +19,11 @@ test_expect_success "proc-receive: no hook, fail to push special ref ($PROTOCOL)
1919
! [remote rejected] HEAD -> refs/for/main/topic (fail to run proc-receive hook)
2020
EOF
2121
test_cmp expect actual &&
22-
git -C "$upstream" show-ref >out &&
23-
make_user_friendly_and_stable_output <out >actual &&
24-
cat >expect <<-EOF &&
22+
23+
test_cmp_refs -C "$upstream" <<-EOF
2524
<COMMIT-A> refs/heads/main
2625
<COMMIT-A> refs/heads/next
2726
EOF
28-
test_cmp expect actual
2927
'
3028

3129
# Refs of upstream : main(A) next(A)
@@ -41,8 +39,8 @@ test_expect_success "proc-receive: no hook, all failed for atomic push ($PROTOCO
4139
test_must_fail git -C workbench push --atomic origin \
4240
$B:main \
4341
HEAD:next \
44-
HEAD:refs/for/main/topic >out 2>&1 &&
45-
make_user_friendly_and_stable_output <out >actual &&
42+
HEAD:refs/for/main/topic >out-$test_count 2>&1 &&
43+
make_user_friendly_and_stable_output <out-$test_count >actual &&
4644
cat >expect <<-EOF &&
4745
remote: # pre-receive hook
4846
remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
@@ -55,10 +53,8 @@ test_expect_success "proc-receive: no hook, all failed for atomic push ($PROTOCO
5553
! [remote rejected] HEAD -> refs/for/main/topic (fail to run proc-receive hook)
5654
EOF
5755
test_cmp expect actual &&
58-
git -C "$upstream" show-ref >out &&
59-
make_user_friendly_and_stable_output <out >actual &&
60-
cat >expect <<-EOF &&
56+
57+
test_cmp_refs -C "$upstream" <<-EOF
6158
<COMMIT-A> refs/heads/main
6259
EOF
63-
test_cmp expect actual
6460
'

t/t5411/test-0012-no-hook-error--porcelain.sh

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ test_expect_success "proc-receive: no hook, fail to push special ref ($PROTOCOL/
55
test_must_fail git -C workbench push --porcelain origin \
66
HEAD:next \
77
HEAD:refs/for/main/topic \
8-
>out 2>&1 &&
9-
make_user_friendly_and_stable_output <out >actual &&
8+
>out-$test_count 2>&1 &&
9+
make_user_friendly_and_stable_output <out-$test_count >actual &&
1010
cat >expect <<-EOF &&
1111
remote: # pre-receive hook
1212
remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
@@ -20,13 +20,11 @@ test_expect_success "proc-receive: no hook, fail to push special ref ($PROTOCOL/
2020
Done
2121
EOF
2222
test_cmp expect actual &&
23-
git -C "$upstream" show-ref >out &&
24-
make_user_friendly_and_stable_output <out >actual &&
25-
cat >expect <<-EOF &&
23+
24+
test_cmp_refs -C "$upstream" <<-EOF
2625
<COMMIT-A> refs/heads/main
2726
<COMMIT-A> refs/heads/next
2827
EOF
29-
test_cmp expect actual
3028
'
3129

3230
# Refs of upstream : main(A) next(A)
@@ -42,8 +40,8 @@ test_expect_success "proc-receive: no hook, all failed for atomic push ($PROTOCO
4240
test_must_fail git -C workbench push --porcelain --atomic origin \
4341
$B:main \
4442
HEAD:next \
45-
HEAD:refs/for/main/topic >out 2>&1 &&
46-
make_user_friendly_and_stable_output <out >actual &&
43+
HEAD:refs/for/main/topic >out-$test_count 2>&1 &&
44+
make_user_friendly_and_stable_output <out-$test_count >actual &&
4745
cat >expect <<-EOF &&
4846
remote: # pre-receive hook
4947
remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/main
@@ -57,10 +55,8 @@ test_expect_success "proc-receive: no hook, all failed for atomic push ($PROTOCO
5755
Done
5856
EOF
5957
test_cmp expect actual &&
60-
git -C "$upstream" show-ref >out &&
61-
make_user_friendly_and_stable_output <out >actual &&
62-
cat >expect <<-EOF &&
58+
59+
test_cmp_refs -C "$upstream" <<-EOF
6360
<COMMIT-A> refs/heads/main
6461
EOF
65-
test_cmp expect actual
6662
'

0 commit comments

Comments
 (0)