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