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

Last change on this file since 3901 was 3621, checked in by Bruno Cornec, 10 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
RevLine 
[3621]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.