diff options
| author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2019-04-18 06:16:51 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2019-04-19 14:03:24 +0900 |
| commit | b7ce24d09526d4e181920ee029c25438196c2847 (patch) | |
| tree | 2ae8b7a19cbc5dff59b42caad7e8807f941c7625 /t/helper/test-serve-v2.c | |
| parent | test-tool: handle the `-C <directory>` option just like `git` (diff) | |
| download | git-b7ce24d09526d4e181920ee029c25438196c2847.tar.gz git-b7ce24d09526d4e181920ee029c25438196c2847.zip | |
Turn `git serve` into a test helper
The `git serve` built-in was introduced in ed10cb952d31 (serve:
introduce git-serve, 2018-03-15) as a backend to serve Git protocol v2,
probably originally intended to be spawned by `git upload-pack`.
However, in the version that the protocol v2 patches made it into core
Git, `git upload-pack` calls the `serve()` function directly instead of
spawning `git serve`; The only reason in life for `git serve` to survive
as a built-in command is to provide a way to test the protocol v2
functionality.
Meaning that it does not even have to be a built-in that is installed
with end-user facing Git installations, but it can be a test helper
instead.
Let's make it so.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/helper/test-serve-v2.c')
| -rw-r--r-- | t/helper/test-serve-v2.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/t/helper/test-serve-v2.c b/t/helper/test-serve-v2.c new file mode 100644 index 0000000000..aee35e5aef --- /dev/null +++ b/t/helper/test-serve-v2.c @@ -0,0 +1,31 @@ +#include "test-tool.h" +#include "cache.h" +#include "parse-options.h" +#include "serve.h" + +static char const * const serve_usage[] = { + N_("test-tool serve-v2 [<options>]"), + NULL +}; + +int cmd__serve_v2(int argc, const char **argv) +{ + struct serve_options opts = SERVE_OPTIONS_INIT; + + struct option options[] = { + OPT_BOOL(0, "stateless-rpc", &opts.stateless_rpc, + N_("quit after a single request/response exchange")), + OPT_BOOL(0, "advertise-capabilities", &opts.advertise_capabilities, + N_("exit immediately after advertising capabilities")), + OPT_END() + }; + const char *prefix = setup_git_directory(); + + /* ignore all unknown cmdline switches for now */ + argc = parse_options(argc, argv, prefix, options, serve_usage, + PARSE_OPT_KEEP_DASHDASH | + PARSE_OPT_KEEP_UNKNOWN); + serve(&opts); + + return 0; +} |
