dbus-test.c revision 94790fef4a846ef2bed9bf1825c4c2b0ca7b8566
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 data slot tests\n", "dbus-test"); 89 if (!_dbus_data_slot_test ()) 90 die ("dataslot"); 91 92 check_memleaks (); 93 94 printf ("%s: running keyring tests\n", "dbus-test"); 95 if (!_dbus_keyring_test ()) 96 die ("keyring"); 97 98 check_memleaks (); 99 100#if 0 101 printf ("%s: running md5 tests\n", "dbus-test"); 102 if (!_dbus_md5_test ()) 103 die ("md5"); 104 105 check_memleaks (); 106#endif 107 108 printf ("%s: running SHA-1 tests\n", "dbus-test"); 109 if (!_dbus_sha_test (test_data_dir)) 110 die ("SHA-1"); 111 112 check_memleaks (); 113 114 printf ("%s: running auth tests\n", "dbus-test"); 115 if (!_dbus_auth_test (test_data_dir)) 116 die ("auth"); 117 118 check_memleaks (); 119 120 printf ("%s: running address parse tests\n", "dbus-test"); 121 if (!_dbus_address_test ()) 122 die ("address parsing"); 123 124 check_memleaks (); 125 126 printf ("%s: running marshalling tests\n", "dbus-test"); 127 if (!_dbus_marshal_test ()) 128 die ("marshalling"); 129 130 check_memleaks (); 131 132 printf ("%s: running message tests\n", "dbus-test"); 133 if (!_dbus_message_test (test_data_dir)) 134 die ("messages"); 135 136 check_memleaks (); 137 138 printf ("%s: running memory pool tests\n", "dbus-test"); 139 if (!_dbus_mem_pool_test ()) 140 die ("memory pools"); 141 142 check_memleaks (); 143 144 printf ("%s: running linked list tests\n", "dbus-test"); 145 if (!_dbus_list_test ()) 146 die ("lists"); 147 148 check_memleaks (); 149 150 printf ("%s: running hash table tests\n", "dbus-test"); 151 if (!_dbus_hash_test ()) 152 die ("hash tables"); 153 154 check_memleaks (); 155 156 printf ("%s: running dict tests\n", "dbus-test"); 157 if (!_dbus_dict_test ()) 158 die ("dicts"); 159 160 check_memleaks (); 161 162 printf ("%s: completed successfully\n", "dbus-test"); 163#else 164 printf ("Not compiled with unit tests, not running any\n"); 165#endif 166} 167 168 169