1 /* vi: set sw=4 ts=4: */
3 * bbunit: Simple unit-testing framework for Busybox.
5 * Copyright (C) 2014 by Bartosz Golaszewski <bartekgola@gmail.com>
7 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
10 //kbuild:lib-$(CONFIG_UNIT_TEST) += bbunit.o
11 //applet:IF_UNIT_TEST(APPLET(unit, BB_DIR_USR_BIN, BB_SUID_DROP))
13 //usage:#define unit_trivial_usage
15 //usage:#define unit_full_usage "\n\n"
16 //usage: "Run the unit-test suite"
20 static llist_t *tests = NULL;
21 static unsigned tests_registered = 0;
22 static int test_retval;
24 void bbunit_registertest(struct bbunit_listelem *test)
26 llist_add_to_end(&tests, test);
30 void bbunit_settestfailed(void)
35 int unit_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) MAIN_EXTERNALLY_VISIBLE;
36 int unit_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
38 unsigned tests_run = 0;
39 unsigned tests_failed = 0;
41 bb_error_msg("Running %d test(s)...", tests_registered);
43 struct bbunit_listelem* el = llist_pop(&tests);
47 bb_error_msg("Case: [%s]", el->name);
51 if (test_retval < 0) {
52 bb_error_msg("[ERROR] [%s]: TEST FAILED", el->name);
58 if (tests_failed > 0) {
59 bb_error_msg("[ERROR] %u test(s) FAILED", tests_failed);
63 bb_error_msg("All tests passed");