In _dbus_test_main() check if a specified test name is available

Fixes #362
This commit is contained in:
Ralf Habacker 2021-12-10 10:24:30 +01:00
parent febafd863e
commit 0d0649145f

View 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