Havoc Pennington | d012387 | 2007-07-14 02:44:01 +0000 | [diff] [blame] | 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ |
Havoc Pennington | 1428c65 | 2002-11-23 06:53:37 +0000 | [diff] [blame] | 2 | /* dbus-test.c Program to run all tests |
| 3 | * |
Havoc Pennington | aad6fa8 | 2005-01-17 00:16:28 +0000 | [diff] [blame] | 4 | * Copyright (C) 2002, 2003, 2004, 2005 Red Hat Inc. |
Havoc Pennington | 1428c65 | 2002-11-23 06:53:37 +0000 | [diff] [blame] | 5 | * |
Havoc Pennington | 43605a6 | 2004-08-10 03:07:01 +0000 | [diff] [blame] | 6 | * Licensed under the Academic Free License version 2.1 |
Havoc Pennington | 1428c65 | 2002-11-23 06:53:37 +0000 | [diff] [blame] | 7 | * |
| 8 | * This program is free software; you can redistribute it and/or modify |
| 9 | * it under the terms of the GNU General Public License as published by |
| 10 | * the Free Software Foundation; either version 2 of the License, or |
| 11 | * (at your option) any later version. |
| 12 | * |
| 13 | * This program is distributed in the hope that it will be useful, |
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 16 | * GNU General Public License for more details. |
| 17 | * |
| 18 | * You should have received a copy of the GNU General Public License |
| 19 | * along with this program; if not, write to the Free Software |
Tobias Mueller | 5baf2f8 | 2009-07-10 19:32:38 -0400 | [diff] [blame] | 20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
Havoc Pennington | 1428c65 | 2002-11-23 06:53:37 +0000 | [diff] [blame] | 21 | * |
| 22 | */ |
| 23 | |
Havoc Pennington | 650c274 | 2003-01-18 15:19:01 +0000 | [diff] [blame] | 24 | #include <config.h> |
Havoc Pennington | 576cdb6 | 2002-11-23 19:56:30 +0000 | [diff] [blame] | 25 | #include "dbus-test.h" |
Havoc Pennington | 05a4ad6 | 2003-01-28 03:53:29 +0000 | [diff] [blame] | 26 | #include "dbus-sysdeps.h" |
Havoc Pennington | c3af5cc | 2003-03-24 03:16:58 +0000 | [diff] [blame] | 27 | #include "dbus-internals.h" |
Havoc Pennington | 1428c65 | 2002-11-23 06:53:37 +0000 | [diff] [blame] | 28 | #include <stdio.h> |
Havoc Pennington | 17fbe2b | 2002-12-24 06:37:33 +0000 | [diff] [blame] | 29 | #include <stdlib.h> |
| 30 | |
Havoc Pennington | c3af5cc | 2003-03-24 03:16:58 +0000 | [diff] [blame] | 31 | #ifdef DBUS_BUILD_TESTS |
Havoc Pennington | 17fbe2b | 2002-12-24 06:37:33 +0000 | [diff] [blame] | 32 | static void |
| 33 | die (const char *failure) |
| 34 | { |
Havoc Pennington | 05a4ad6 | 2003-01-28 03:53:29 +0000 | [diff] [blame] | 35 | fprintf (stderr, "Unit test failed: %s\n", failure); |
Havoc Pennington | 17fbe2b | 2002-12-24 06:37:33 +0000 | [diff] [blame] | 36 | exit (1); |
| 37 | } |
Havoc Pennington | 269d74f | 2003-03-26 07:16:03 +0000 | [diff] [blame] | 38 | |
| 39 | static void |
| 40 | check_memleaks (void) |
| 41 | { |
| 42 | dbus_shutdown (); |
| 43 | |
| 44 | printf ("%s: checking for memleaks\n", "dbus-test"); |
| 45 | if (_dbus_get_malloc_blocks_outstanding () != 0) |
| 46 | { |
| 47 | _dbus_warn ("%d dbus_malloc blocks were not freed\n", |
| 48 | _dbus_get_malloc_blocks_outstanding ()); |
| 49 | die ("memleaks"); |
| 50 | } |
| 51 | } |
| 52 | |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 53 | typedef dbus_bool_t (*TestFunc)(void); |
| 54 | typedef dbus_bool_t (*TestDataFunc)(const char *data); |
| 55 | |
| 56 | static void |
| 57 | run_test (const char *test_name, |
| 58 | const char *specific_test, |
| 59 | TestFunc test) |
| 60 | { |
| 61 | if (!specific_test || strcmp (specific_test, test_name) == 0) |
| 62 | { |
| 63 | printf ("%s: running %s tests\n", "dbus-test", test_name); |
| 64 | if (!test ()) |
| 65 | die (test_name); |
| 66 | } |
| 67 | |
| 68 | check_memleaks (); |
| 69 | } |
| 70 | |
| 71 | static void |
| 72 | run_data_test (const char *test_name, |
| 73 | const char *specific_test, |
| 74 | TestDataFunc test, |
| 75 | const char *test_data_dir) |
| 76 | { |
| 77 | if (!specific_test || strcmp (specific_test, test_name) == 0) |
| 78 | { |
| 79 | printf ("%s: running %s tests\n", "dbus-test", test_name); |
| 80 | if (!test (test_data_dir)) |
| 81 | die (test_name); |
| 82 | } |
| 83 | |
| 84 | check_memleaks (); |
| 85 | } |
| 86 | |
Havoc Pennington | eaefe03 | 2006-10-28 01:41:37 +0000 | [diff] [blame] | 87 | #endif /* DBUS_BUILD_TESTS */ |
| 88 | |
Havoc Pennington | 993be10 | 2003-01-09 01:31:35 +0000 | [diff] [blame] | 89 | /** |
| 90 | * An exported symbol to be run in order to execute |
| 91 | * unit tests. Should not be used by |
| 92 | * any app other than our test app, this symbol |
| 93 | * won't exist in some builds of the library. |
| 94 | * (with --enable-tests=no) |
Havoc Pennington | 05a4ad6 | 2003-01-28 03:53:29 +0000 | [diff] [blame] | 95 | * |
| 96 | * @param test_data_dir the directory with test data (test/data normally) |
Havoc Pennington | 993be10 | 2003-01-09 01:31:35 +0000 | [diff] [blame] | 97 | */ |
| 98 | void |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 99 | dbus_internal_do_not_use_run_tests (const char *test_data_dir, const char *specific_test) |
Havoc Pennington | 1428c65 | 2002-11-23 06:53:37 +0000 | [diff] [blame] | 100 | { |
Havoc Pennington | eae3a9c | 2003-01-15 16:34:52 +0000 | [diff] [blame] | 101 | #ifdef DBUS_BUILD_TESTS |
Havoc Pennington | bc8b061 | 2003-04-06 19:12:45 +0000 | [diff] [blame] | 102 | if (!_dbus_threads_init_debug ()) |
| 103 | die ("debug threads init"); |
| 104 | |
Havoc Pennington | 05a4ad6 | 2003-01-28 03:53:29 +0000 | [diff] [blame] | 105 | if (test_data_dir == NULL) |
| 106 | test_data_dir = _dbus_getenv ("DBUS_TEST_DATA"); |
| 107 | |
| 108 | if (test_data_dir != NULL) |
| 109 | printf ("Test data in %s\n", test_data_dir); |
| 110 | else |
| 111 | printf ("No test data!\n"); |
Anders Carlsson | ee09dbf | 2003-03-06 23:11:49 +0000 | [diff] [blame] | 112 | |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 113 | run_test ("string", specific_test, _dbus_string_test); |
Havoc Pennington | 5fd1e38 | 2003-08-31 01:51:44 +0000 | [diff] [blame] | 114 | |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 115 | run_test ("sysdeps", specific_test, _dbus_sysdeps_test); |
Havoc Pennington | c3af5cc | 2003-03-24 03:16:58 +0000 | [diff] [blame] | 116 | |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 117 | run_test ("data-slot", specific_test, _dbus_data_slot_test); |
Havoc Pennington | d3204dc | 2006-11-15 03:07:59 +0000 | [diff] [blame] | 118 | |
| 119 | run_test ("misc", specific_test, _dbus_misc_test); |
Havoc Pennington | 7265423 | 2003-02-26 06:42:57 +0000 | [diff] [blame] | 120 | |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 121 | run_test ("address", specific_test, _dbus_address_test); |
Havoc Pennington | 269d74f | 2003-03-26 07:16:03 +0000 | [diff] [blame] | 122 | |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 123 | run_test ("server", specific_test, _dbus_server_test); |
Havoc Pennington | 3f1ad21 | 2003-07-07 00:47:01 +0000 | [diff] [blame] | 124 | |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 125 | run_test ("object-tree", specific_test, _dbus_object_tree_test); |
Colin Walters | 54a2e9f | 2005-02-24 16:03:56 +0000 | [diff] [blame] | 126 | |
| 127 | run_test ("signature", specific_test, _dbus_signature_test); |
Havoc Pennington | 24f411a | 2003-08-25 14:56:53 +0000 | [diff] [blame] | 128 | |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 129 | run_test ("marshalling", specific_test, _dbus_marshal_test); |
Miloslav Trmac | 928d7f3 | 2003-06-28 23:12:11 +0000 | [diff] [blame] | 130 | |
Havoc Pennington | 71f3b46 | 2005-02-11 01:13:45 +0000 | [diff] [blame] | 131 | #if 0 |
Havoc Pennington | 9c3d566 | 2005-01-15 07:15:38 +0000 | [diff] [blame] | 132 | printf ("%s: running recursive marshalling tests\n", "dbus-test"); |
| 133 | if (!_dbus_marshal_recursive_test ()) |
| 134 | die ("recursive marshal"); |
| 135 | |
| 136 | check_memleaks (); |
| 137 | #else |
| 138 | _dbus_warn ("recursive marshal tests disabled\n"); |
| 139 | #endif |
| 140 | |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 141 | run_test ("byteswap", specific_test, _dbus_marshal_byteswap_test); |
Havoc Pennington | fddbc09 | 2005-01-27 23:39:26 +0000 | [diff] [blame] | 142 | |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 143 | run_test ("memory", specific_test, _dbus_memory_test); |
Miloslav Trmac | 928d7f3 | 2003-06-28 23:12:11 +0000 | [diff] [blame] | 144 | |
Havoc Pennington | 3ed9db5 | 2005-01-28 03:06:56 +0000 | [diff] [blame] | 145 | #if 1 |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 146 | run_test ("mem-pool", specific_test, _dbus_mem_pool_test); |
Havoc Pennington | 9d21554 | 2005-01-23 06:10:07 +0000 | [diff] [blame] | 147 | #endif |
Havoc Pennington | c3af5cc | 2003-03-24 03:16:58 +0000 | [diff] [blame] | 148 | |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 149 | run_test ("list", specific_test, _dbus_list_test); |
Havoc Pennington | 576cdb6 | 2002-11-23 19:56:30 +0000 | [diff] [blame] | 150 | |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 151 | run_test ("marshal-validate", specific_test, _dbus_marshal_validate_test); |
Havoc Pennington | 9c3d566 | 2005-01-15 07:15:38 +0000 | [diff] [blame] | 152 | |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 153 | run_test ("marshal-header", specific_test, _dbus_marshal_header_test); |
Havoc Pennington | 269d74f | 2003-03-26 07:16:03 +0000 | [diff] [blame] | 154 | |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 155 | run_data_test ("message", specific_test, _dbus_message_test, test_data_dir); |
Havoc Pennington | d1c7eef | 2003-05-05 03:13:35 +0000 | [diff] [blame] | 156 | |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 157 | run_test ("hash", specific_test, _dbus_hash_test); |
Havoc Pennington | 269d74f | 2003-03-26 07:16:03 +0000 | [diff] [blame] | 158 | |
Ralf Habacker | 5c593d7 | 2007-05-19 18:15:56 +0000 | [diff] [blame] | 159 | #if !defined(DBUS_WINCE) |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 160 | run_data_test ("spawn", specific_test, _dbus_spawn_test, test_data_dir); |
Ralf Habacker | 5c593d7 | 2007-05-19 18:15:56 +0000 | [diff] [blame] | 161 | #endif |
Havoc Pennington | d1c7eef | 2003-05-05 03:13:35 +0000 | [diff] [blame] | 162 | |
Havoc Pennington | 2383267 | 2007-06-09 21:53:20 +0000 | [diff] [blame] | 163 | run_data_test ("credentials", specific_test, _dbus_credentials_test, test_data_dir); |
Havoc Pennington | 7be5fd9 | 2007-06-09 23:41:33 +0000 | [diff] [blame] | 164 | |
| 165 | #ifdef DBUS_UNIX |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 166 | run_data_test ("userdb", specific_test, _dbus_userdb_test, test_data_dir); |
Havoc Pennington | 7be5fd9 | 2007-06-09 23:41:33 +0000 | [diff] [blame] | 167 | #endif |
Havoc Pennington | c3af5cc | 2003-03-24 03:16:58 +0000 | [diff] [blame] | 168 | |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 169 | run_test ("keyring", specific_test, _dbus_keyring_test); |
Havoc Pennington | 0366385 | 2003-04-08 22:07:09 +0000 | [diff] [blame] | 170 | |
| 171 | #if 0 |
| 172 | printf ("%s: running md5 tests\n", "dbus-test"); |
| 173 | if (!_dbus_md5_test ()) |
| 174 | die ("md5"); |
| 175 | |
| 176 | check_memleaks (); |
| 177 | #endif |
| 178 | |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 179 | run_data_test ("sha", specific_test, _dbus_sha_test, test_data_dir); |
Havoc Pennington | 0366385 | 2003-04-08 22:07:09 +0000 | [diff] [blame] | 180 | |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 181 | run_data_test ("auth", specific_test, _dbus_auth_test, test_data_dir); |
Havoc Pennington | 0366385 | 2003-04-08 22:07:09 +0000 | [diff] [blame] | 182 | |
Colin Walters | f9a7bcc | 2005-02-21 19:38:06 +0000 | [diff] [blame] | 183 | run_data_test ("pending-call", specific_test, _dbus_pending_call_test, test_data_dir); |
Havoc Pennington | 0366385 | 2003-04-08 22:07:09 +0000 | [diff] [blame] | 184 | |
Havoc Pennington | 993be10 | 2003-01-09 01:31:35 +0000 | [diff] [blame] | 185 | printf ("%s: completed successfully\n", "dbus-test"); |
Havoc Pennington | eae3a9c | 2003-01-15 16:34:52 +0000 | [diff] [blame] | 186 | #else |
| 187 | printf ("Not compiled with unit tests, not running any\n"); |
| 188 | #endif |
Havoc Pennington | 1428c65 | 2002-11-23 06:53:37 +0000 | [diff] [blame] | 189 | } |
Havoc Pennington | eaefe03 | 2006-10-28 01:41:37 +0000 | [diff] [blame] | 190 | |