200 lines
5.0 KiB
Bash
Executable File
200 lines
5.0 KiB
Bash
Executable File
#!/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 --http-backend-info-refs and --advertise-refs are aliased' '
|
|
git upload-pack --http-backend-info-refs . >expected 2>err.expected &&
|
|
git upload-pack --advertise-refs . >actual 2>err.actual &&
|
|
test_cmp err.expected err.actual &&
|
|
test_cmp expected actual
|
|
'
|
|
|
|
test_expect_success 'git receive-pack --http-backend-info-refs and --advertise-refs are aliased' '
|
|
git receive-pack --http-backend-info-refs . >expected 2>err.expected &&
|
|
git receive-pack --advertise-refs . >actual 2>err.actual &&
|
|
test_cmp err.expected err.actual &&
|
|
test_cmp expected actual
|
|
'
|
|
|
|
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' '
|
|
printf "agent=FAKE" >agent_and_os_name &&
|
|
if test_have_prereq WINDOWS
|
|
then
|
|
# We do not use test_config here so that any tests below can reuse
|
|
# the "expect" file from this test
|
|
git config transfer.advertiseOSVersion false
|
|
else
|
|
printf "\nos-version=%s\n" $(uname -s | test_redact_non_printables) >>agent_and_os_name
|
|
fi &&
|
|
|
|
cat >expect <<-EOF &&
|
|
version 2
|
|
$(cat agent_and_os_name)
|
|
ls-refs=unborn
|
|
fetch=shallow wait-for-done
|
|
server-option
|
|
object-format=$(test_oid algo)
|
|
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 upload-pack --advertise-refs: v2 with osVersion.command config set' '
|
|
# test_config is used here as we are not reusing any file output from here
|
|
test_config osVersion.command "uname -srvm" &&
|
|
printf "agent=FAKE" >agent_and_long_os_name &&
|
|
|
|
if test_have_prereq !WINDOWS
|
|
then
|
|
printf "\nos-version=%s\n" $(uname -srvm | test_redact_non_printables) >>agent_and_long_os_name
|
|
fi &&
|
|
|
|
cat >expect <<-EOF &&
|
|
version 2
|
|
$(cat agent_and_long_os_name)
|
|
ls-refs=unborn
|
|
fetch=shallow wait-for-done
|
|
server-option
|
|
object-format=$(test_oid algo)
|
|
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
|