t/interop: add test of old clients against modern git-daemon

This test just checks that old clients can clone and fetch
from a newer git-daemon. The opposite should also be true,
but it's hard to test ancient versions of git-daemon because
they lack basic options like "--listen".

Note that we have to make a slight tweak to the
lib-git-daemon helper from the regular tests, so that it
starts the daemon with our correct git.a version.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2017-02-25 04:37:30 -05:00 committed by Junio C Hamano
parent 3d8936153d
commit bd4d9d993c
2 changed files with 43 additions and 1 deletions

41
t/interop/i5500-git-daemon.sh Executable file
View file

@ -0,0 +1,41 @@
#!/bin/sh
VERSION_A=.
VERSION_B=v1.0.0
: ${LIB_GIT_DAEMON_PORT:=5500}
LIB_GIT_DAEMON_COMMAND='git.a daemon'
test_description='clone and fetch by older client'
. ./interop-lib.sh
. "$TEST_DIRECTORY"/lib-git-daemon.sh
start_git_daemon --export-all
repo=$GIT_DAEMON_DOCUMENT_ROOT_PATH/repo
test_expect_success "create repo served by $VERSION_A" '
git.a init "$repo" &&
git.a -C "$repo" commit --allow-empty -m one
'
test_expect_success "clone with $VERSION_B" '
git.b clone "$GIT_DAEMON_URL/repo" child &&
echo one >expect &&
git.a -C child log -1 --format=%s >actual &&
test_cmp expect actual
'
test_expect_success "fetch with $VERSION_B" '
git.a -C "$repo" commit --allow-empty -m two &&
(
cd child &&
git.b fetch
) &&
echo two >expect &&
git.a -C child log -1 --format=%s FETCH_HEAD >actual &&
test_cmp expect actual
'
stop_git_daemon
test_done

View file

@ -46,7 +46,8 @@ start_git_daemon() {
say >&3 "Starting git daemon ..."
mkfifo git_daemon_output
git daemon --listen=127.0.0.1 --port="$LIB_GIT_DAEMON_PORT" \
${LIB_GIT_DAEMON_COMMAND:-git daemon} \
--listen=127.0.0.1 --port="$LIB_GIT_DAEMON_PORT" \
--reuseaddr --verbose \
--base-path="$GIT_DAEMON_DOCUMENT_ROOT_PATH" \
"$@" "$GIT_DAEMON_DOCUMENT_ROOT_PATH" \