]> git.ipfire.org Git - thirdparty/git.git/commitdiff
quote-stress-test: accept arguments to test via the command-line
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Fri, 20 Sep 2019 17:09:39 +0000 (19:09 +0200)
committerJohannes Schindelin <johannes.schindelin@gmx.de>
Thu, 5 Dec 2019 14:36:53 +0000 (15:36 +0100)
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>
t/helper/test-run-command.c

index 6c801cb529763721171f5ad8360cc58a803bc46c..bdbc5ec56a3f3a90fdc6b5dfbe5d9b5d0ead010b 100644 (file)
@@ -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;