diff options
Diffstat (limited to 'src/tests/unittests_main.c')
-rw-r--r-- | src/tests/unittests_main.c | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/src/tests/unittests_main.c b/src/tests/unittests_main.c new file mode 100644 index 0000000..2d57ed2 --- /dev/null +++ b/src/tests/unittests_main.c @@ -0,0 +1,84 @@ +/* Copyright (C) 2011 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <config.h> +#include "knot/common.h" +#include "common/libtap/tap_unit.h" + +// Units to test +#include "tests/common/slab_tests.h" +#include "tests/common/skiplist_tests.h" +#include "tests/common/events_tests.h" +#include "tests/common/da_tests.h" +#include "tests/common/acl_tests.h" +#include "tests/common/fdset_tests.h" +#include "tests/knot/dthreads_tests.h" +#include "tests/knot/journal_tests.h" +#include "tests/knot/server_tests.h" +#include "tests/knot/conf_tests.h" + +// Run all loaded units +int main(int argc, char *argv[]) +{ + // Open log + log_init(); + log_levels_set(LOGT_SYSLOG, LOG_ANY, 0); + + // Build test set + unit_api *tests[] = { + /* Core data structures. */ + &journal_tests_api, //! Journal unit + &slab_tests_api, //! SLAB allocator unit + &skiplist_tests_api, //! Skip list unit + &dthreads_tests_api, //! DThreads testing unit + &events_tests_api, //! Events testing unit + &da_tests_api, //! Dynamic array unit + &acl_tests_api, //! ACLs + &fdset_tests_api, //! FDSET polling wrapper + + /* Server parts. */ + &conf_tests_api, //! Configuration parser tests + &server_tests_api, //! Server unit + NULL + }; + + // Plan number of tests + int id = 0; + int test_count = 0; + note("Units:"); + while (tests[id] != NULL) { + note("- %s : %d tests", tests[id]->name, + tests[id]->count(argc, argv)); + test_count += tests[id]->count(argc, argv); + ++id; + } + + plan(test_count); + + // Run tests + id = 0; + while (tests[id] != NULL) { + diag("Testing unit: %s", tests[id]->name); + tests[id]->run(argc, argv); + ++id; + } + + log_close(); + + // Evaluate + return exit_status(); +} + |