blob: af0163c25ca732921575f768ed2e7dab8a58a6a6 [file] [log] [blame]
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