diff --git a/test/test-utils.c b/test/test-utils.c index e7852708..fbdd2759 100644 --- a/test/test-utils.c +++ b/test/test-utils.c @@ -653,12 +653,22 @@ _dbus_test_help_page (const char *appname) fprintf(stdout, "%s [] [] []\n", appname); fprintf(stdout, "Options:\n"); fprintf(stdout, " --help this page\n"); + fprintf(stdout, " --list-tests show available tests\n"); fprintf(stdout, " --tap expect test data dir to be set by environment variable DBUS_TEST_DATA\n"); fprintf(stdout, "Environment variables:\n"); fprintf(stdout, " DBUS_TEST_ONLY= set specific test to run\n"); fprintf(stdout, " DBUS_TEST_DATA= set test data dir (required when using --tap)\n"); } +static void +_dbus_test_show_available_tests (const DBusTestCase *tests) +{ + const DBusTestCase *p; + + for (p = tests; p->name; p++) + fprintf(stdout, "%s\n", p->name); +} + /* * _dbus_test_main: * @argc: number of command-line arguments @@ -702,6 +712,12 @@ _dbus_test_main (int argc, exit(0); } + else if (argc > 1 && strcmp (argv[1], "--list-tests") == 0) + { + _dbus_test_show_available_tests (tests); + exit (0); + } + /* We can't assume that strings from _dbus_getenv() will remain valid * forever, because some tests call setenv(), which is allowed to * reallocate the entire environment block, and in Wine it seems that it