dbus-test.c revision 03b9ca6d4ecf2577958530b8390d675c73a58825
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 1.2 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 (test_data_dir == NULL) 69 test_data_dir = _dbus_getenv ("DBUS_TEST_DATA"); 70 71 if (test_data_dir != NULL) 72 printf ("Test data in %s\n", test_data_dir); 73 else 74 printf ("No test data!\n"); 75 76 printf ("%s: running string tests\n", "dbus-test"); 77 if (!_dbus_string_test ()) 78 die ("strings"); 79 80 check_memleaks (); 81 82 printf ("%s: running sysdeps tests\n", "dbus-test"); 83 if (!_dbus_sysdeps_test ()) 84 die ("sysdeps"); 85 86 check_memleaks (); 87 88 printf ("%s: running spawn tests\n", "dbus-test"); 89 if (!_dbus_spawn_test (test_data_dir)) 90 die ("spawn"); 91 92 check_memleaks (); 93 94 printf ("%s: running data slot tests\n", "dbus-test"); 95 if (!_dbus_data_slot_test ()) 96 die ("dataslot"); 97 98 check_memleaks (); 99 100 printf ("%s: running keyring tests\n", "dbus-test"); 101 if (!_dbus_keyring_test ()) 102 die ("keyring"); 103 104 check_memleaks (); 105 106#if 0 107 printf ("%s: running md5 tests\n", "dbus-test"); 108 if (!_dbus_md5_test ()) 109 die ("md5"); 110 111 check_memleaks (); 112#endif 113 114 printf ("%s: running SHA-1 tests\n", "dbus-test"); 115 if (!_dbus_sha_test (test_data_dir)) 116 die ("SHA-1"); 117 118 check_memleaks (); 119 120 printf ("%s: running auth tests\n", "dbus-test"); 121 if (!_dbus_auth_test (test_data_dir)) 122 die ("auth"); 123 124 check_memleaks (); 125 126 printf ("%s: running address parse tests\n", "dbus-test"); 127 if (!_dbus_address_test ()) 128 die ("address parsing"); 129 130 check_memleaks (); 131 132 printf ("%s: running marshalling tests\n", "dbus-test"); 133 if (!_dbus_marshal_test ()) 134 die ("marshalling"); 135 136 check_memleaks (); 137 138 printf ("%s: running message tests\n", "dbus-test"); 139 if (!_dbus_message_test (test_data_dir)) 140 die ("messages"); 141 142 check_memleaks (); 143 144 printf ("%s: running memory pool tests\n", "dbus-test"); 145 if (!_dbus_mem_pool_test ()) 146 die ("memory pools"); 147 148 check_memleaks (); 149 150 printf ("%s: running linked list tests\n", "dbus-test"); 151 if (!_dbus_list_test ()) 152 die ("lists"); 153 154 check_memleaks (); 155 156 printf ("%s: running hash table tests\n", "dbus-test"); 157 if (!_dbus_hash_test ()) 158 die ("hash tables"); 159 160 check_memleaks (); 161 162 printf ("%s: running dict tests\n", "dbus-test"); 163 if (!_dbus_dict_test ()) 164 die ("dicts"); 165 166 check_memleaks (); 167 168 printf ("%s: completed successfully\n", "dbus-test"); 169#else 170 printf ("Not compiled with unit tests, not running any\n"); 171#endif 172} 173 174 175