From 24687a7776f46f71f784704248cff970baf4da9c Mon Sep 17 00:00:00 2001
From: Johannes Schindelin <johannes.schindelin@gmx.de>
Date: Fri, 20 Sep 2019 19:09:39 +0200
Subject: quote-stress-test: accept arguments to test via the command-line

When the stress test reported a problem with quoting certain arguments,
it is helpful to have a facility to play with those arguments in order
to find out whether variations of those arguments are affected, too.

Let's allow `test-run-command quote-stress-test -- <args>` to be used
for that purpose.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
(cherry picked from commit 55953c77c0bfcb727ffd7e293e4661b7a24b791b)
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
 t/helper/test-run-command.c | 31 ++++++++++++++++++++-----------
 1 file changed, 20 insertions(+), 11 deletions(-)

diff --git a/t/helper/test-run-command.c b/t/helper/test-run-command.c
index bdab5d362a..d310e79f98 100644
--- a/t/helper/test-run-command.c
+++ b/t/helper/test-run-command.c
@@ -84,25 +84,34 @@ static int quote_stress_test(int argc, const char **argv)
 
 	for (i = 0; i < trials; i++) {
 		struct child_process cp = CHILD_PROCESS_INIT;
-		size_t arg_count = 1 + (my_random() % 5), arg_offset;
+		size_t arg_count, arg_offset;
 		int ret = 0;
 
 		argv_array_clear(&args);
 		argv_array_pushl(&args, "test-tool", "run-command",
 				 "quote-echo", NULL);
 		arg_offset = args.argc;
-		for (j = 0; j < arg_count; j++) {
-			char buf[20];
-			size_t min_len = 1;
-			size_t arg_len = min_len +
-				(my_random() % (ARRAY_SIZE(buf) - min_len));
 
-			for (k = 0; k < arg_len; k++)
-				buf[k] = special[my_random() %
-					ARRAY_SIZE(special)];
-			buf[arg_len] = '\0';
+		if (argc > 0) {
+			trials = 1;
+			arg_count = argc;
+			for (j = 0; j < arg_count; j++)
+				argv_array_push(&args, argv[j]);
+		} else {
+			arg_count = 1 + (my_random() % 5);
+			for (j = 0; j < arg_count; j++) {
+				char buf[20];
+				size_t min_len = 1;
+				size_t arg_len = min_len +
+					(my_random() % (ARRAY_SIZE(buf) - min_len));
 
-			argv_array_push(&args, buf);
+				for (k = 0; k < arg_len; k++)
+					buf[k] = special[my_random() %
+						ARRAY_SIZE(special)];
+				buf[arg_len] = '\0';
+
+				argv_array_push(&args, buf);
+			}
 		}
 
 		cp.argv = args.argv;
-- 
2.24.0.393.g34dc348eaf

