test_main: Add option to list tests

The test runner already lists available tests if it fails to parse the
command line, but add a -l option to explicitly do this without also
printing an error message and a summary of options.
This commit is contained in:
Dag-Erling Smørgrav 2025-12-06 14:42:16 +01:00
parent 8c86c46d1b
commit 8295366f94

View File

@ -3681,11 +3681,19 @@ test_run(int i, const char *tmpdir)
*/
static void
usage(const char *program)
list_tests(void)
{
static const int limit = nitems(tests);
int i;
for (i = 0; i < limit; i++)
printf(" %d: %s\n", i, tests[i].name);
}
static void
usage(const char *program)
{
printf("Usage: %s [options] <test> <test> ...\n", program);
printf("Default is to run all tests.\n");
printf("Otherwise, specify the numbers of the tests you wish to run.\n");
@ -3693,6 +3701,8 @@ usage(const char *program)
printf(" -d Dump core after any failure, for debugging.\n");
printf(" -k Keep all temp files.\n");
printf(" Default: temp files for successful tests deleted.\n");
printf(" -l List available tests and exit, ignoring all other.\n");
printf(" options and arguments.\n");
#ifdef PROGRAM
printf(" -p <path> Path to executable to be tested.\n");
printf(" Default: path taken from " ENVBASE " environment variable.\n");
@ -3704,8 +3714,7 @@ usage(const char *program)
printf(" -u Keep running specified tests until one fails.\n");
printf(" -v Verbose.\n");
printf("Available tests:\n");
for (i = 0; i < limit; i++)
printf(" %d: %s\n", i, tests[i].name);
list_tests();
exit(1);
}
@ -4079,6 +4088,10 @@ main(int argc, char **argv)
case 'k':
keep_temp_files = 1;
break;
case 'l':
list_tests();
exit(0);
break;
case 'p':
#ifdef PROGRAM
testprogfile = option_arg;