dbus-test.c revision a1df3040f29223eddaa3ace0fe018fcb28cddcd9
1/* -*- mode: C; c-file-style: "gnu" -*- */ 2/* dbus-test.c Program to run all tests 3 * 4 * Copyright (C) 2002, 2003 Red Hat Inc. 5 * 6 * Licensed under the Academic Free License version 2.0 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 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 21 * 22 */ 23 24#include <config.h> 25#include "dbus-test.h" 26#include "dbus-sysdeps.h" 27#include "dbus-internals.h" 28#include <stdio.h> 29#include <stdlib.h> 30 31#ifdef DBUS_BUILD_TESTS 32static void 33die (const char *failure) 34{ 35 fprintf (stderr, "Unit test failed: %s\n", failure); 36 exit (1); 37} 38 39static void 40check_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 53#endif /* DBUS_BUILD_TESTS */ 54 55/** 56 * An exported symbol to be run in order to execute 57 * unit tests. Should not be used by 58 * any app other than our test app, this symbol 59 * won't exist in some builds of the library. 60 * (with --enable-tests=no) 61 * 62 * @param test_data_dir the directory with test data (test/data normally) 63 */ 64void 65dbus_internal_do_not_use_run_tests (const char *test_data_dir) 66{ 67#ifdef DBUS_BUILD_TESTS 68 if (!_dbus_threads_init_debug ()) 69 die ("debug threads init"); 70 71 if (test_data_dir == NULL) 72 test_data_dir = _dbus_getenv ("DBUS_TEST_DATA"); 73 74 if (test_data_dir != NULL) 75 printf ("Test data in %s\n", test_data_dir); 76 else 77 printf ("No test data!\n"); 78 79 printf ("%s: running string tests\n", "dbus-test"); 80 if (!_dbus_string_test ()) 81 die ("strings"); 82 83 check_memleaks (); 84 85 printf ("%s: running sysdeps tests\n", "dbus-test"); 86 if (!_dbus_sysdeps_test ()) 87 die ("sysdeps"); 88 89 check_memleaks (); 90 91 printf ("%s: running data slot tests\n", "dbus-test"); 92 if (!_dbus_data_slot_test ()) 93 die ("dataslot"); 94 95 check_memleaks (); 96 97 printf ("%s: running address parse tests\n", "dbus-test"); 98 if (!_dbus_address_test ()) 99 die ("address parsing"); 100 101 check_memleaks (); 102 103 printf ("%s: running object tree tests\n", "dbus-test"); 104 if (!_dbus_object_tree_test ()) 105 die ("object tree"); 106 107 check_memleaks (); 108 109 printf ("%s: running marshalling tests\n", "dbus-test"); 110 if (!_dbus_marshal_test ()) 111 die ("marshalling"); 112 113 check_memleaks (); 114 115 printf ("%s: running memory tests\n", "dbus-test"); 116 if (!_dbus_memory_test ()) 117 die ("memory"); 118 119 check_memleaks (); 120 121 printf ("%s: running memory pool tests\n", "dbus-test"); 122 if (!_dbus_mem_pool_test ()) 123 die ("memory pools"); 124 125 check_memleaks (); 126 127 printf ("%s: running linked list tests\n", "dbus-test"); 128 if (!_dbus_list_test ()) 129 die ("lists"); 130 131 check_memleaks (); 132 133 printf ("%s: running message tests\n", "dbus-test"); 134 if (!_dbus_message_test (test_data_dir)) 135 die ("messages"); 136 137 check_memleaks (); 138 139 printf ("%s: running hash table tests\n", "dbus-test"); 140 if (!_dbus_hash_test ()) 141 die ("hash tables"); 142 143 check_memleaks (); 144 145 printf ("%s: running spawn tests\n", "dbus-test"); 146 if (!_dbus_spawn_test (test_data_dir)) 147 die ("spawn"); 148 149 check_memleaks (); 150 151 printf ("%s: running user database tests\n", "dbus-test"); 152 if (!_dbus_userdb_test (test_data_dir)) 153 die ("user database"); 154 155 check_memleaks (); 156 157 printf ("%s: running keyring tests\n", "dbus-test"); 158 if (!_dbus_keyring_test ()) 159 die ("keyring"); 160 161 check_memleaks (); 162 163#if 0 164 printf ("%s: running md5 tests\n", "dbus-test"); 165 if (!_dbus_md5_test ()) 166 die ("md5"); 167 168 check_memleaks (); 169#endif 170 171 printf ("%s: running SHA-1 tests\n", "dbus-test"); 172 if (!_dbus_sha_test (test_data_dir)) 173 die ("SHA-1"); 174 175 check_memleaks (); 176 177 printf ("%s: running auth tests\n", "dbus-test"); 178 if (!_dbus_auth_test (test_data_dir)) 179 die ("auth"); 180 181 check_memleaks (); 182 183 printf ("%s: running pending call tests\n", "dbus-test"); 184 if (!_dbus_pending_call_test (test_data_dir)) 185 die ("auth"); 186 187 check_memleaks (); 188 189 printf ("%s: completed successfully\n", "dbus-test"); 190#else 191 printf ("Not compiled with unit tests, not running any\n"); 192#endif 193} 194 195 196