diff options
author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2019-04-18 06:16:49 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-04-19 14:03:24 +0900 |
commit | 6ea18fffb016f7267f1f8bd2a4871500c4174f68 (patch) | |
tree | 8281b35f661bf6933a09a1f2e089b283896a0807 /t | |
parent | check-docs: do not bother checking for legacy scripts' documentation (diff) | |
download | tgif-6ea18fffb016f7267f1f8bd2a4871500c4174f68.tar.xz |
test-tool: handle the `-C <directory>` option just like `git`
In preparation for moving `git serve` into `test-tool` (because it
really is only used by the test suite), we teach the `test-tool` the
useful trick to change the working directory before running the test
command, which will avoid introducing subshells in the test code.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't')
-rw-r--r-- | t/helper/test-tool.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/t/helper/test-tool.c b/t/helper/test-tool.c index 99db7409b8..2b21943f93 100644 --- a/t/helper/test-tool.c +++ b/t/helper/test-tool.c @@ -1,5 +1,11 @@ #include "git-compat-util.h" #include "test-tool.h" +#include "parse-options.h" + +static const char * const test_tool_usage[] = { + "test-tool [-C <directory>] <command [<arguments>...]]", + NULL +}; struct test_cmd { const char *name; @@ -73,11 +79,24 @@ static NORETURN void die_usage(void) int cmd_main(int argc, const char **argv) { int i; + const char *working_directory = NULL; + struct option options[] = { + OPT_STRING('C', NULL, &working_directory, "directory", + "change the working directory"), + OPT_END() + }; BUG_exit_code = 99; + argc = parse_options(argc, argv, NULL, options, test_tool_usage, + PARSE_OPT_STOP_AT_NON_OPTION | + PARSE_OPT_KEEP_ARGV0); + if (argc < 2) die_usage(); + if (working_directory && chdir(working_directory) < 0) + die("Could not cd to '%s'", working_directory); + for (i = 0; i < ARRAY_SIZE(cmds); i++) { if (!strcmp(cmds[i].name, argv[1])) { argv++; |