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