test-main.c revision 1e9b185b0c274ef0d684b1e43418388225321e72
1d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington/* -*- mode: C; c-file-style: "gnu" -*- */
2d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington/* test-main.c  main() for make check
3d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington *
4d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington * Copyright (C) 2003 Red Hat, Inc.
5d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington *
6a1df3040f29223eddaa3ace0fe018fcb28cddcd9Richard Hult * Licensed under the Academic Free License version 2.0
7d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington *
8d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington * This program is free software; you can redistribute it and/or modify
9d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington * it under the terms of the GNU General Public License as published by
10d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington * the Free Software Foundation; either version 2 of the License, or
11d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington * (at your option) any later version.
12d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington *
13d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington * This program is distributed in the hope that it will be useful,
14d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington * but WITHOUT ANY WARRANTY; without even the implied warranty of
15d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington * GNU General Public License for more details.
17d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington *
18d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington * You should have received a copy of the GNU General Public License
19d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington * along with this program; if not, write to the Free Software
20d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington *
22d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington */
23d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington
24d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington#include "test.h"
253bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Pennington#include <stdio.h>
263bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Pennington#include <stdlib.h>
273bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Pennington#include <dbus/dbus-string.h>
283bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Pennington#include <dbus/dbus-sysdeps.h>
29c3af5ccdbc22e8990d04ec2f89ad1f2e053655e9Havoc Pennington#include <dbus/dbus-internals.h>
301e9b185b0c274ef0d684b1e43418388225321e72Havoc Pennington#include "selinux.h"
313bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Pennington
3277eac31aee89346d1399193be6199b9b16fb77afHavoc Pennington#ifdef DBUS_BUILD_TESTS
333bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Penningtonstatic void
343bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Penningtondie (const char *failure)
353bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Pennington{
363bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Pennington  fprintf (stderr, "Unit test failed: %s\n", failure);
373bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Pennington  exit (1);
383bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Pennington}
39d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington
40269d74f214f87bed0f6fd58f1c848240d31e0b9fHavoc Penningtonstatic void
41269d74f214f87bed0f6fd58f1c848240d31e0b9fHavoc Penningtoncheck_memleaks (const char *name)
42269d74f214f87bed0f6fd58f1c848240d31e0b9fHavoc Pennington{
43269d74f214f87bed0f6fd58f1c848240d31e0b9fHavoc Pennington  dbus_shutdown ();
44269d74f214f87bed0f6fd58f1c848240d31e0b9fHavoc Pennington
45269d74f214f87bed0f6fd58f1c848240d31e0b9fHavoc Pennington  printf ("%s: checking for memleaks\n", name);
46269d74f214f87bed0f6fd58f1c848240d31e0b9fHavoc Pennington  if (_dbus_get_malloc_blocks_outstanding () != 0)
47269d74f214f87bed0f6fd58f1c848240d31e0b9fHavoc Pennington    {
48269d74f214f87bed0f6fd58f1c848240d31e0b9fHavoc Pennington      _dbus_warn ("%d dbus_malloc blocks were not freed\n",
49269d74f214f87bed0f6fd58f1c848240d31e0b9fHavoc Pennington                  _dbus_get_malloc_blocks_outstanding ());
50269d74f214f87bed0f6fd58f1c848240d31e0b9fHavoc Pennington      die ("memleaks");
51269d74f214f87bed0f6fd58f1c848240d31e0b9fHavoc Pennington    }
52269d74f214f87bed0f6fd58f1c848240d31e0b9fHavoc Pennington}
5377eac31aee89346d1399193be6199b9b16fb77afHavoc Pennington#endif /* DBUS_BUILD_TESTS */
54269d74f214f87bed0f6fd58f1c848240d31e0b9fHavoc Pennington
55d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Penningtonint
56d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Penningtonmain (int argc, char **argv)
57d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington{
58d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington#ifdef DBUS_BUILD_TESTS
593bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Pennington  const char *dir;
603bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Pennington  DBusString test_data_dir;
613bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Pennington
623bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Pennington  if (argc > 1)
633bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Pennington    dir = argv[1];
643bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Pennington  else
653bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Pennington    dir = _dbus_getenv ("DBUS_TEST_DATA");
663bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Pennington
673bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Pennington  if (dir == NULL)
6829c71168cd17b11eed65023c97aff401d5305b01Havoc Pennington    {
6929c71168cd17b11eed65023c97aff401d5305b01Havoc Pennington      fprintf (stderr, "Must specify test data directory as argv[1] or in DBUS_TEST_DATA env variable\n");
7029c71168cd17b11eed65023c97aff401d5305b01Havoc Pennington      return 1;
7129c71168cd17b11eed65023c97aff401d5305b01Havoc Pennington    }
72d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington
731e9b185b0c274ef0d684b1e43418388225321e72Havoc Pennington  if (!bus_selinux_init ())
741e9b185b0c274ef0d684b1e43418388225321e72Havoc Pennington    die ("could not init selinux support");
751e9b185b0c274ef0d684b1e43418388225321e72Havoc Pennington
763bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Pennington  _dbus_string_init_const (&test_data_dir, dir);
77bc8b061eec0fd9de6552a9e6118c40283863b6dcHavoc Pennington
78bc8b061eec0fd9de6552a9e6118c40283863b6dcHavoc Pennington#if 0
79bc8b061eec0fd9de6552a9e6118c40283863b6dcHavoc Pennington  /* FIXME this is disabled because of thread bugs that need fixing... */
80bc8b061eec0fd9de6552a9e6118c40283863b6dcHavoc Pennington  if (!_dbus_threads_init_debug ())
81bc8b061eec0fd9de6552a9e6118c40283863b6dcHavoc Pennington    die ("initializing debug threads");
82bc8b061eec0fd9de6552a9e6118c40283863b6dcHavoc Pennington#endif
83dd79fc73f08574698c18c6a35dc309d5ef33fde0Mikael Hallendal
8440751c847b18b4861f623fc83fc8742bc463363bHavoc Pennington  printf ("%s: Running expire list test\n", argv[0]);
8540751c847b18b4861f623fc83fc8742bc463363bHavoc Pennington  if (!bus_expire_list_test (&test_data_dir))
8640751c847b18b4861f623fc83fc8742bc463363bHavoc Pennington    die ("expire list");
8740751c847b18b4861f623fc83fc8742bc463363bHavoc Pennington
8840751c847b18b4861f623fc83fc8742bc463363bHavoc Pennington  check_memleaks (argv[0]);
8990ed1d84588a84697051e643175452c50d682eceHavoc Pennington
9090ed1d84588a84697051e643175452c50d682eceHavoc Pennington  printf ("%s: Running config file parser test\n", argv[0]);
9190ed1d84588a84697051e643175452c50d682eceHavoc Pennington  if (!bus_config_parser_test (&test_data_dir))
9290ed1d84588a84697051e643175452c50d682eceHavoc Pennington    die ("parser");
93bc86794f23fa538a405813fb61b531c2eacc9ae1Havoc Pennington
94bc86794f23fa538a405813fb61b531c2eacc9ae1Havoc Pennington  check_memleaks (argv[0]);
95269d74f214f87bed0f6fd58f1c848240d31e0b9fHavoc Pennington
9690ed1d84588a84697051e643175452c50d682eceHavoc Pennington  printf ("%s: Running policy test\n", argv[0]);
9790ed1d84588a84697051e643175452c50d682eceHavoc Pennington  if (!bus_policy_test (&test_data_dir))
9890ed1d84588a84697051e643175452c50d682eceHavoc Pennington    die ("policy");
99269d74f214f87bed0f6fd58f1c848240d31e0b9fHavoc Pennington
100269d74f214f87bed0f6fd58f1c848240d31e0b9fHavoc Pennington  check_memleaks (argv[0]);
101fe1cb3a9a1fc6bcbfa1b3be74ac9d5867005210fHavoc Pennington
102a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington  printf ("%s: Running signals test\n", argv[0]);
103a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington  if (!bus_signals_test (&test_data_dir))
104a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington    die ("signals");
105a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington
106a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington  check_memleaks (argv[0]);
107a683a80c409cc4f2e57ba6a3e60d52f91b8657d0Havoc Pennington
108fe1cb3a9a1fc6bcbfa1b3be74ac9d5867005210fHavoc Pennington  printf ("%s: Running SHA1 connection test\n", argv[0]);
109fe1cb3a9a1fc6bcbfa1b3be74ac9d5867005210fHavoc Pennington  if (!bus_dispatch_sha1_test (&test_data_dir))
110fe1cb3a9a1fc6bcbfa1b3be74ac9d5867005210fHavoc Pennington    die ("sha1");
111fe1cb3a9a1fc6bcbfa1b3be74ac9d5867005210fHavoc Pennington
112fe1cb3a9a1fc6bcbfa1b3be74ac9d5867005210fHavoc Pennington  check_memleaks (argv[0]);
1131fbf6fa49c90010f3f255f60944920ef8908701cHavoc Pennington  printf ("%s: Running message dispatch test\n", argv[0]);
114dd79fc73f08574698c18c6a35dc309d5ef33fde0Mikael Hallendal  if (!bus_dispatch_test (&test_data_dir))
1153bea935316ff048e68dea6a26c2e8e9fd314477fHavoc Pennington    die ("dispatch");
116269d74f214f87bed0f6fd58f1c848240d31e0b9fHavoc Pennington
117269d74f214f87bed0f6fd58f1c848240d31e0b9fHavoc Pennington  check_memleaks (argv[0]);
118dd79fc73f08574698c18c6a35dc309d5ef33fde0Mikael Hallendal
119dd79fc73f08574698c18c6a35dc309d5ef33fde0Mikael Hallendal  printf ("%s: Running service files reloading test\n", argv[0]);
120dd79fc73f08574698c18c6a35dc309d5ef33fde0Mikael Hallendal  if (!bus_activation_service_reload_test (&test_data_dir))
121dd79fc73f08574698c18c6a35dc309d5ef33fde0Mikael Hallendal    die ("service reload");
122dd79fc73f08574698c18c6a35dc309d5ef33fde0Mikael Hallendal
123dd79fc73f08574698c18c6a35dc309d5ef33fde0Mikael Hallendal  check_memleaks (argv[0]);
124c3af5ccdbc22e8990d04ec2f89ad1f2e053655e9Havoc Pennington
1251fbf6fa49c90010f3f255f60944920ef8908701cHavoc Pennington  printf ("%s: Success\n", argv[0]);
1261e9b185b0c274ef0d684b1e43418388225321e72Havoc Pennington
1271e9b185b0c274ef0d684b1e43418388225321e72Havoc Pennington  bus_selinux_shutdown ();
128d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington
129d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington  return 0;
130d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington#else /* DBUS_BUILD_TESTS */
1314c95a9782c65f88e2904c44abeb734a1b00f6353Havoc Pennington
1324c95a9782c65f88e2904c44abeb734a1b00f6353Havoc Pennington  printf ("Not compiled with test support\n");
1334c95a9782c65f88e2904c44abeb734a1b00f6353Havoc Pennington
134d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington  return 0;
135d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington#endif
136d65b73884cb876276b6bd73f4b1dfcd920984a8aHavoc Pennington}
137