*
*/
+#include <config.h>
#include "test.h"
#include <stdio.h>
#include <stdlib.h>
}
#endif /* DBUS_BUILD_TESTS */
+static DBusInitialFDs *initial_fds = NULL;
+
static void
test_pre_hook (void)
{
&& (!bus_selinux_pre_init ()
|| !bus_selinux_full_init ()))
die ("could not init selinux support");
+
+ initial_fds = _dbus_check_fdleaks_enter ();
}
static char *progname = "";
+
static void
test_post_hook (void)
{
if (_dbus_getenv ("DBUS_TEST_SELINUX"))
bus_selinux_shutdown ();
check_memleaks (progname);
- _dbus_check_fdleaks();
+
+ _dbus_check_fdleaks_leave (initial_fds);
+ initial_fds = NULL;
}
int
{
#ifdef DBUS_BUILD_TESTS
const char *dir;
+ const char *only;
DBusString test_data_dir;
progname = argv[0];
else
dir = _dbus_getenv ("DBUS_TEST_DATA");
+ if (argc > 2)
+ only = argv[2];
+ else
+ only = NULL;
+
if (dir == NULL)
{
fprintf (stderr, "Must specify test data directory as argv[1] or in DBUS_TEST_DATA env variable\n");
if (!_dbus_threads_init_debug ())
die ("initializing debug threads");
-
- test_pre_hook ();
- printf ("%s: Running expire list test\n", argv[0]);
- if (!bus_expire_list_test (&test_data_dir))
- die ("expire list");
- test_post_hook ();
-
- test_pre_hook ();
- printf ("%s: Running config file parser test\n", argv[0]);
- if (!bus_config_parser_test (&test_data_dir))
- die ("parser");
- test_post_hook ();
-
- test_pre_hook ();
- printf ("%s: Running policy test\n", argv[0]);
- if (!bus_policy_test (&test_data_dir))
- die ("policy");
- test_post_hook ();
-
- test_pre_hook ();
- printf ("%s: Running signals test\n", argv[0]);
- if (!bus_signals_test (&test_data_dir))
- die ("signals");
- test_post_hook ();
-
- test_pre_hook ();
- printf ("%s: Running SHA1 connection test\n", argv[0]);
- if (!bus_dispatch_sha1_test (&test_data_dir))
- die ("sha1");
- test_post_hook ();
-
- test_pre_hook ();
- printf ("%s: Running message dispatch test\n", argv[0]);
- if (!bus_dispatch_test (&test_data_dir))
- die ("dispatch");
- test_post_hook ();
-
- test_pre_hook ();
- printf ("%s: Running service files reloading test\n", argv[0]);
- if (!bus_activation_service_reload_test (&test_data_dir))
- die ("service reload");
- test_post_hook ();
+
+ if (only == NULL || strcmp (only, "expire-list") == 0)
+ {
+ test_pre_hook ();
+ printf ("%s: Running expire list test\n", argv[0]);
+ if (!bus_expire_list_test (&test_data_dir))
+ die ("expire list");
+ test_post_hook ();
+ }
+
+ if (only == NULL || strcmp (only, "config-parser") == 0)
+ {
+ test_pre_hook ();
+ printf ("%s: Running config file parser test\n", argv[0]);
+ if (!bus_config_parser_test (&test_data_dir))
+ die ("parser");
+ test_post_hook ();
+ }
+
+ if (only == NULL || strcmp (only, "policy") == 0)
+ {
+ test_pre_hook ();
+ printf ("%s: Running policy test\n", argv[0]);
+ if (!bus_policy_test (&test_data_dir))
+ die ("policy");
+ test_post_hook ();
+ }
+
+ if (only == NULL || strcmp (only, "signals") == 0)
+ {
+ test_pre_hook ();
+ printf ("%s: Running signals test\n", argv[0]);
+ if (!bus_signals_test (&test_data_dir))
+ die ("signals");
+ test_post_hook ();
+ }
+
+ if (only == NULL || strcmp (only, "dispatch-sha1") == 0)
+ {
+ test_pre_hook ();
+ printf ("%s: Running SHA1 connection test\n", argv[0]);
+ if (!bus_dispatch_sha1_test (&test_data_dir))
+ die ("sha1");
+ test_post_hook ();
+ }
+
+ if (only == NULL || strcmp (only, "dispatch") == 0)
+ {
+ test_pre_hook ();
+ printf ("%s: Running message dispatch test\n", argv[0]);
+ if (!bus_dispatch_test (&test_data_dir))
+ die ("dispatch");
+ test_post_hook ();
+ }
+
+ if (only == NULL || strcmp (only, "activation-service-reload") == 0)
+ {
+ test_pre_hook ();
+ printf ("%s: Running service files reloading test\n", argv[0]);
+ if (!bus_activation_service_reload_test (&test_data_dir))
+ die ("service reload");
+ test_post_hook ();
+ }
#ifdef HAVE_UNIX_FD_PASSING
- test_pre_hook ();
- printf ("%s: Running unix fd passing test\n", argv[0]);
- if (!bus_unix_fds_passing_test (&test_data_dir))
- die ("unix fd passing");
- test_post_hook ();
+ if (only == NULL || strcmp (only, "unix-fds-passing") == 0)
+ {
+ test_pre_hook ();
+ printf ("%s: Running unix fd passing test\n", argv[0]);
+ if (!bus_unix_fds_passing_test (&test_data_dir))
+ die ("unix fd passing");
+ test_post_hook ();
+ }
#endif
printf ("%s: Success\n", argv[0]);