summaryrefslogtreecommitdiff
path: root/protocol.c
diff options
context:
space:
mode:
authorJonathan Tan <jonathantanmy@google.com>2019-02-25 21:54:06 (GMT)
committerJunio C Hamano <gitster@pobox.com>2019-03-07 01:02:42 (GMT)
commit8cbeba063250bf55f73921702209df10ed186e9e (patch)
treeb907fca25c374903f5d46cb1d0a7737ae9e0686d /protocol.c
parent8feddda32cc50e928404788d7b9377c0b5f73f50 (diff)
downloadgit-8cbeba063250bf55f73921702209df10ed186e9e.zip
git-8cbeba063250bf55f73921702209df10ed186e9e.tar.gz
git-8cbeba063250bf55f73921702209df10ed186e9e.tar.bz2
tests: define GIT_TEST_PROTOCOL_VERSION
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>
Diffstat (limited to 'protocol.c')
-rw-r--r--protocol.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/protocol.c b/protocol.c
index 5e63678..9741f05 100644
--- a/protocol.c
+++ b/protocol.c
@@ -17,6 +17,10 @@ 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);
@@ -24,10 +28,19 @@ enum protocol_version get_protocol_version_config(void)
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)