t5730: introduce fetch command helper

Assembling a "raw" fetch command to be fed directly to "test-tool serve-v2"
is extracted into a test helper.

Suggested-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Kim Altintop <kim@eagain.st>
Reviewed-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Kim Altintop 2021-08-13 06:23:40 +00:00 committed by Junio C Hamano
parent 2d755dfac9
commit bac01c6469

View File

@ -40,6 +40,30 @@ write_command () {
fi
}
# Write a complete fetch command to stdout, suitable for use with `test-tool
# pkt-line`. "want-ref", "want", and "have" lines are read from stdin.
#
# Examples:
#
# write_fetch_command <<-EOF
# want-ref refs/heads/main
# have $(git rev-parse a)
# EOF
#
# write_fetch_command <<-EOF
# want $(git rev-parse b)
# have $(git rev-parse a)
# EOF
#
write_fetch_command () {
write_command fetch &&
echo "0001" &&
echo "no-progress" &&
cat &&
echo "done" &&
echo "0000"
}
# c(o/foo) d(o/bar)
# \ /
# b e(baz) f(main)
@ -77,15 +101,11 @@ test_expect_success 'config controls ref-in-want advertisement' '
'
test_expect_success 'invalid want-ref line' '
test-tool pkt-line pack >in <<-EOF &&
$(write_command fetch)
0001
no-progress
write_fetch_command >pkt <<-EOF &&
want-ref refs/heads/non-existent
done
0000
EOF
test-tool pkt-line pack <pkt >in &&
test_must_fail test-tool serve-v2 --stateless-rpc 2>out <in &&
grep "unknown ref" out
'
@ -97,16 +117,11 @@ test_expect_success 'basic want-ref' '
EOF
git rev-parse f >expected_commits &&
oid=$(git rev-parse a) &&
test-tool pkt-line pack >in <<-EOF &&
$(write_command fetch)
0001
no-progress
write_fetch_command >pkt <<-EOF &&
want-ref refs/heads/main
have $oid
done
0000
have $(git rev-parse a)
EOF
test-tool pkt-line pack <pkt >in &&
test-tool serve-v2 --stateless-rpc >out <in &&
check_output
@ -121,17 +136,12 @@ test_expect_success 'multiple want-ref lines' '
EOF
git rev-parse c d >expected_commits &&
oid=$(git rev-parse b) &&
test-tool pkt-line pack >in <<-EOF &&
$(write_command fetch)
0001
no-progress
write_fetch_command >pkt <<-EOF &&
want-ref refs/heads/o/foo
want-ref refs/heads/o/bar
have $oid
done
0000
have $(git rev-parse b)
EOF
test-tool pkt-line pack <pkt >in &&
test-tool serve-v2 --stateless-rpc >out <in &&
check_output
@ -144,16 +154,12 @@ test_expect_success 'mix want and want-ref' '
EOF
git rev-parse e f >expected_commits &&
test-tool pkt-line pack >in <<-EOF &&
$(write_command fetch)
0001
no-progress
write_fetch_command >pkt <<-EOF &&
want-ref refs/heads/main
want $(git rev-parse e)
have $(git rev-parse a)
done
0000
EOF
test-tool pkt-line pack <pkt >in &&
test-tool serve-v2 --stateless-rpc >out <in &&
check_output
@ -166,16 +172,11 @@ test_expect_success 'want-ref with ref we already have commit for' '
EOF
>expected_commits &&
oid=$(git rev-parse c) &&
test-tool pkt-line pack >in <<-EOF &&
$(write_command fetch)
0001
no-progress
write_fetch_command >pkt <<-EOF &&
want-ref refs/heads/o/foo
have $oid
done
0000
have $(git rev-parse c)
EOF
test-tool pkt-line pack <pkt >in &&
test-tool serve-v2 --stateless-rpc >out <in &&
check_output