summaryrefslogtreecommitdiff
path: root/t/helper/test-run-command.c
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2019-09-20 19:09:39 +0200
committerJohannes Schindelin <johannes.schindelin@gmx.de>2019-12-05 15:36:53 +0100
commit55953c77c0bfcb727ffd7e293e4661b7a24b791b (patch)
treec1dcea30603732d58ff2b4c45f7f7c6ac99b3670 /t/helper/test-run-command.c
parentad1559252945179e28fba7d693494051352810c5 (diff)
downloadgit-55953c77c0bfcb727ffd7e293e4661b7a24b791b.tar.gz
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>
Diffstat (limited to 't/helper/test-run-command.c')
-rw-r--r--t/helper/test-run-command.c35
1 files changed, 22 insertions, 13 deletions
diff --git a/t/helper/test-run-command.c b/t/helper/test-run-command.c
index 6c801cb529..bdbc5ec56a 100644
--- a/t/helper/test-run-command.c
+++ b/t/helper/test-run-command.c
@@ -83,25 +83,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-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';
-
- argv_array_push(&args, buf);
+
+ 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));
+
+ 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;