source: MondoRescue/branches/3.3/mindi-busybox/libbb/bbunit.c@ 3621

Last change on this file since 3621 was 3621, checked in by Bruno Cornec, 7 years ago

New 3?3 banch for incorporation of latest busybox 1.25. Changing minor version to handle potential incompatibilities.

  • Property svn:eol-style set to native
File size: 1.4 KB
Line 
1/* vi: set sw=4 ts=4: */
2/*
3 * bbunit: Simple unit-testing framework for Busybox.
4 *
5 * Copyright (C) 2014 by Bartosz Golaszewski <bartekgola@gmail.com>
6 *
7 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
8 */
9
10//kbuild:lib-$(CONFIG_UNIT_TEST) += bbunit.o
11//applet:IF_UNIT_TEST(APPLET(unit, BB_DIR_USR_BIN, BB_SUID_DROP))
12
13//usage:#define unit_trivial_usage
14//usage: ""
15//usage:#define unit_full_usage "\n\n"
16//usage: "Run the unit-test suite"
17
18#include "libbb.h"
19
20static llist_t *tests = NULL;
21static unsigned tests_registered = 0;
22static int test_retval;
23
24void bbunit_registertest(struct bbunit_listelem *test)
25{
26 llist_add_to_end(&tests, test);
27 tests_registered++;
28}
29
30void bbunit_settestfailed(void)
31{
32 test_retval = -1;
33}
34
35int unit_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) MAIN_EXTERNALLY_VISIBLE;
36int unit_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
37{
38 unsigned tests_run = 0;
39 unsigned tests_failed = 0;
40
41 bb_error_msg("Running %d test(s)...", tests_registered);
42 for (;;) {
43 struct bbunit_listelem* el = llist_pop(&tests);
44 if (!el)
45 break;
46
47 bb_error_msg("Case: [%s]", el->name);
48 test_retval = 0;
49 el->testfunc();
50
51 if (test_retval < 0) {
52 bb_error_msg("[ERROR] [%s]: TEST FAILED", el->name);
53 tests_failed++;
54 }
55 tests_run++;
56 }
57
58 if (tests_failed > 0) {
59 bb_error_msg("[ERROR] %u test(s) FAILED", tests_failed);
60 return EXIT_FAILURE;
61 }
62
63 bb_error_msg("All tests passed");
64 return EXIT_SUCCESS;
65}
Note: See TracBrowser for help on using the repository browser.