]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
In _dbus_test_main() check if a specified test name is available
authorRalf Habacker <ralf.habacker@freenet.de>
Fri, 10 Dec 2021 09:24:30 +0000 (10:24 +0100)
committerRalf Habacker <ralf.habacker@freenet.de>
Fri, 10 Dec 2021 09:36:37 +0000 (10:36 +0100)
Fixes #362

test/test-utils.c

index fbdd275910c7bf5e12b338ddeb056ebe9d893560..479461625061d88fc27c57e2b38897e117fb6873 100644 (file)
@@ -669,6 +669,20 @@ _dbus_test_show_available_tests (const DBusTestCase  *tests)
     fprintf(stdout, "%s\n", p->name);
 }
 
+static const DBusTestCase*
+_dbus_test_find_test (const DBusTestCase *tests, const char *specific_test)
+{
+  const DBusTestCase *p;
+
+  for (p = tests; p->name; p++)
+    {
+      if (strcmp (specific_test, p->name) == 0)
+        return p;
+    }
+  return NULL;
+}
+
+
 /*
  * _dbus_test_main:
  * @argc: number of command-line arguments
@@ -748,6 +762,15 @@ _dbus_test_main (int                  argc,
   else
     specific_test = strdup0_or_die (_dbus_getenv ("DBUS_TEST_ONLY"));
 
+  /* check that test is present */
+  if (specific_test)
+    {
+      if (_dbus_test_find_test (tests, specific_test) == NULL)
+        {
+          _dbus_test_fatal ("Invalid test name '%s' specified", specific_test);
+        }
+    }
+
   /* Some NSS modules like those for sssd and LDAP might allocate fds
    * on a one-per-process basis. Make sure those have already been
    * allocated before we enter the code under test, so that they don't