| From 29077d3748c8e61ad54ac90ee95f3d3691f7606e Mon Sep 17 00:00:00 2001 |
| From: Johannes Schindelin <johannes.schindelin@gmx.de> |
| Date: Fri, 20 Sep 2019 00:12:37 +0200 |
| Subject: quote-stress-test: offer to test quoting arguments for MSYS2 sh |
| |
| It is unfortunate that we need to quote arguments differently on |
| Windows, depending whether we build a command-line for MSYS2's `sh` or |
| for other Windows executables. |
| |
| We already have a test helper to verify the latter, with this patch we |
| can also verify the former. |
| |
| Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> |
| (cherry picked from commit 379e51d1ae668a1f26d50eb59b3f8befc1eb8883) |
| Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> |
| --- |
| t/helper/test-run-command.c | 13 ++++++++++--- |
| 1 file changed, 10 insertions(+), 3 deletions(-) |
| |
| diff --git a/t/helper/test-run-command.c b/t/helper/test-run-command.c |
| index 6da11d3a3c..8579b1f7d1 100644 |
| --- a/t/helper/test-run-command.c |
| +++ b/t/helper/test-run-command.c |
| @@ -68,12 +68,13 @@ static int quote_stress_test(int argc, const char **argv) |
| * were passed in. |
| */ |
| char special[] = ".?*\\^_\"'`{}()[]<>@~&+:;$%"; // \t\r\n\a"; |
| - int i, j, k, trials = 100, skip = 0; |
| + int i, j, k, trials = 100, skip = 0, msys2 = 0; |
| struct strbuf out = STRBUF_INIT; |
| struct argv_array args = ARGV_ARRAY_INIT; |
| struct option options[] = { |
| OPT_INTEGER('n', "trials", &trials, "Number of trials"), |
| OPT_INTEGER('s', "skip", &skip, "Skip <n> trials"), |
| + OPT_BOOL('m', "msys2", &msys2, "Test quoting for MSYS2's sh"), |
| OPT_END() |
| }; |
| const char * const usage[] = { |
| @@ -83,14 +84,20 @@ static int quote_stress_test(int argc, const char **argv) |
| |
| argc = parse_options(argc, argv, NULL, options, usage, 0); |
| |
| + setenv("MSYS_NO_PATHCONV", "1", 0); |
| + |
| for (i = 0; i < trials; i++) { |
| struct child_process cp = CHILD_PROCESS_INIT; |
| size_t arg_count, arg_offset; |
| int ret = 0; |
| |
| argv_array_clear(&args); |
| - argv_array_pushl(&args, "test-tool", "run-command", |
| - "quote-echo", NULL); |
| + if (msys2) |
| + argv_array_pushl(&args, "sh", "-c", |
| + "printf %s\\\\0 \"$@\"", "skip", NULL); |
| + else |
| + argv_array_pushl(&args, "test-tool", "run-command", |
| + "quote-echo", NULL); |
| arg_offset = args.argc; |
| |
| if (argc > 0) { |
| -- |
| 2.24.0.393.g34dc348eaf |
| |