Skip to content

Commit

Permalink
tests: define GIT_TEST_PROTOCOL_VERSION
Browse files Browse the repository at this point in the history
Define a GIT_TEST_PROTOCOL_VERSION environment variable meant to be used
from tests. When set, this ensures protocol.version is at least the
given value, allowing the entire test suite to be run as if this
configuration is in place for all repositories.

As of this patch, all tests pass whether GIT_TEST_PROTOCOL_VERSION is
unset or set to 0. Some tests fail when GIT_TEST_PROTOCOL_VERSION is set
to 1 or 2, but this will be dealt with in subsequent patches.

This is based on work by Ævar Arnfjörð Bjarmason.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
jonathantanmy authored and gitster committed Mar 7, 2019
1 parent 8feddda commit 8cbeba0
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 4 deletions.
17 changes: 15 additions & 2 deletions protocol.c
Expand Up @@ -17,17 +17,30 @@ static enum protocol_version parse_protocol_version(const char *value)
enum protocol_version get_protocol_version_config(void)
{
const char *value;
enum protocol_version retval = protocol_v0;
const char *git_test_k = "GIT_TEST_PROTOCOL_VERSION";
const char *git_test_v = getenv(git_test_k);

if (!git_config_get_string_const("protocol.version", &value)) {
enum protocol_version version = parse_protocol_version(value);

if (version == protocol_unknown_version)
die("unknown value for config 'protocol.version': %s",
value);

return version;
retval = version;
}

if (git_test_v && *git_test_v) {
enum protocol_version env = parse_protocol_version(git_test_v);

if (env == protocol_unknown_version)
die("unknown value for %s: %s", git_test_k, git_test_v);
if (retval < env)
retval = env;
}

return protocol_v0;
return retval;
}

enum protocol_version determine_protocol_version_server(void)
Expand Down
3 changes: 3 additions & 0 deletions t/README
Expand Up @@ -327,6 +327,9 @@ marked strings" in po/README for details.
GIT_TEST_SPLIT_INDEX=<boolean> forces split-index mode on the whole
test suite. Accept any boolean values that are accepted by git-config.

GIT_TEST_PROTOCOL_VERSION=<n>, when set, overrides the
'protocol.version' setting to n if it is less than n.

GIT_TEST_FULL_IN_PACK_ARRAY=<boolean> exercises the uncommon
pack-objects code path where there are more than 1024 packs even if
the actual number of packs in repository is below this limit. Accept
Expand Down
2 changes: 1 addition & 1 deletion t/t5400-send-pack.sh
Expand Up @@ -288,7 +288,7 @@ test_expect_success 'receive-pack de-dupes .have lines' '
$shared .have
EOF
GIT_TRACE_PACKET=$(pwd)/trace \
GIT_TRACE_PACKET=$(pwd)/trace GIT_TEST_PROTOCOL_VERSION= \
git push \
--receive-pack="unset GIT_TRACE_PACKET; git-receive-pack" \
fork HEAD:foo &&
Expand Down
3 changes: 2 additions & 1 deletion t/t5551-http-fetch-smart.sh
Expand Up @@ -43,7 +43,8 @@ test_expect_success 'clone http repository' '
< Cache-Control: no-cache, max-age=0, must-revalidate
< Content-Type: application/x-git-upload-pack-result
EOF
GIT_TRACE_CURL=true git clone --quiet $HTTPD_URL/smart/repo.git clone 2>err &&
GIT_TRACE_CURL=true GIT_TEST_PROTOCOL_VERSION= \
git clone --quiet $HTTPD_URL/smart/repo.git clone 2>err &&
test_cmp file clone/file &&
tr '\''\015'\'' Q <err |
sed -e "
Expand Down

0 comments on commit 8cbeba0

Please sign in to comment.