]> git.ipfire.org Git - thirdparty/git.git/commitdiff
{upload,receive}-pack tests: add --advertise-refs tests
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Thu, 5 Aug 2021 01:25:41 +0000 (03:25 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 5 Aug 2021 15:59:37 +0000 (08:59 -0700)
The --advertise-refs option had no explicit tests of its own, only
other http tests that would fail at a distance if it it was
broken. Let's test its behavior explicitly.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t5555-http-smart-common.sh [new file with mode: 0755]

diff --git a/t/t5555-http-smart-common.sh b/t/t5555-http-smart-common.sh
new file mode 100755 (executable)
index 0000000..b813099
--- /dev/null
@@ -0,0 +1,147 @@
+#!/bin/sh
+
+test_description='test functionality common to smart fetch & push'
+
+. ./test-lib.sh
+
+test_expect_success 'setup' '
+       test_commit --no-tag initial
+'
+
+test_expect_success 'git upload-pack --advertise-refs' '
+       cat >expect <<-EOF &&
+       $(git rev-parse HEAD) HEAD
+       $(git rev-parse HEAD) $(git symbolic-ref HEAD)
+       0000
+       EOF
+
+       # We only care about GIT_PROTOCOL, not GIT_TEST_PROTOCOL_VERSION
+       sane_unset GIT_PROTOCOL &&
+       GIT_TEST_PROTOCOL_VERSION=2 \
+       git upload-pack --advertise-refs . >out 2>err &&
+
+       test-tool pkt-line unpack <out >actual &&
+       test_must_be_empty err &&
+       test_cmp actual expect &&
+
+       # The --advertise-refs alias works
+       git upload-pack --advertise-refs . >out 2>err &&
+
+       test-tool pkt-line unpack <out >actual &&
+       test_must_be_empty err &&
+       test_cmp actual expect
+'
+
+test_expect_success 'git upload-pack --advertise-refs: v0' '
+       # With no specified protocol
+       cat >expect <<-EOF &&
+       $(git rev-parse HEAD) HEAD
+       $(git rev-parse HEAD) $(git symbolic-ref HEAD)
+       0000
+       EOF
+
+       git upload-pack --advertise-refs . >out 2>err &&
+       test-tool pkt-line unpack <out >actual &&
+       test_must_be_empty err &&
+       test_cmp actual expect &&
+
+       # With explicit v0
+       GIT_PROTOCOL=version=0 \
+       git upload-pack --advertise-refs . >out 2>err &&
+       test-tool pkt-line unpack <out >actual 2>err &&
+       test_must_be_empty err &&
+       test_cmp actual expect
+
+'
+
+test_expect_success 'git receive-pack --advertise-refs: v0' '
+       # With no specified protocol
+       cat >expect <<-EOF &&
+       $(git rev-parse HEAD) $(git symbolic-ref HEAD)
+       0000
+       EOF
+
+       git receive-pack --advertise-refs . >out 2>err &&
+       test-tool pkt-line unpack <out >actual &&
+       test_must_be_empty err &&
+       test_cmp actual expect &&
+
+       # With explicit v0
+       GIT_PROTOCOL=version=0 \
+       git receive-pack --advertise-refs . >out 2>err &&
+       test-tool pkt-line unpack <out >actual 2>err &&
+       test_must_be_empty err &&
+       test_cmp actual expect
+
+'
+
+test_expect_success 'git upload-pack --advertise-refs: v1' '
+       # With no specified protocol
+       cat >expect <<-EOF &&
+       version 1
+       $(git rev-parse HEAD) HEAD
+       $(git rev-parse HEAD) $(git symbolic-ref HEAD)
+       0000
+       EOF
+
+       GIT_PROTOCOL=version=1 \
+       git upload-pack --advertise-refs . >out &&
+
+       test-tool pkt-line unpack <out >actual 2>err &&
+       test_must_be_empty err &&
+       test_cmp actual expect
+'
+
+test_expect_success 'git receive-pack --advertise-refs: v1' '
+       # With no specified protocol
+       cat >expect <<-EOF &&
+       version 1
+       $(git rev-parse HEAD) $(git symbolic-ref HEAD)
+       0000
+       EOF
+
+       GIT_PROTOCOL=version=1 \
+       git receive-pack --advertise-refs . >out &&
+
+       test-tool pkt-line unpack <out >actual 2>err &&
+       test_must_be_empty err &&
+       test_cmp actual expect
+'
+
+test_expect_success 'git upload-pack --advertise-refs: v2' '
+       cat >expect <<-EOF &&
+       version 2
+       agent=FAKE
+       ls-refs=unborn
+       fetch=shallow wait-for-done
+       server-option
+       object-format=$(test_oid algo)
+       object-info
+       0000
+       EOF
+
+       GIT_PROTOCOL=version=2 \
+       GIT_USER_AGENT=FAKE \
+       git upload-pack --advertise-refs . >out 2>err &&
+
+       test-tool pkt-line unpack <out >actual &&
+       test_must_be_empty err &&
+       test_cmp actual expect
+'
+
+test_expect_success 'git receive-pack --advertise-refs: v2' '
+       # There is no v2 yet for receive-pack, implicit v0
+       cat >expect <<-EOF &&
+       $(git rev-parse HEAD) $(git symbolic-ref HEAD)
+       0000
+       EOF
+
+       GIT_PROTOCOL=version=2 \
+       git receive-pack --advertise-refs . >out 2>err &&
+
+       test-tool pkt-line unpack <out >actual &&
+       test_must_be_empty err &&
+       test_cmp actual expect
+'
+
+test_done