diff --git a/scripts/test.sh b/scripts/test.sh index c631822..5ebae56 100644 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -1,3 +1,8 @@ cd "$(git rev-parse --show-toplevel)" -echo ":: Evaluator tests ::" && build/evaluator_tests -echo ":: Reader tests ::" && build/reader_tests + +fails=0 + +build/evaluator_tests || fails=`expr $fails + 1` +build/reader_tests || fails=`expr $fails + 1` + +if [ $fails -eq 0 ]; then echo Tests OK; fi diff --git a/tests/testing.c b/tests/testing.c index d911fb8..319a68d 100644 --- a/tests/testing.c +++ b/tests/testing.c @@ -2,20 +2,9 @@ #include -test_run_t test_run; +int fail_count; void testing_fail_msg(const char *func, const char *file, int line) { printf("%s: failed assert @ %s:%d\n", func, file, line); } - -void testing_end_msg(void) -{ - const double success_rate - = 1 - (double)test_run.fail_count / (double)test_run.test_count; - printf( - "%d tests ran (%d assertions), " - "%0.2f%% successful (%d failures)\n", - test_run.test_count, test_run.assertion_count, 100 * success_rate, - test_run.fail_count); -} diff --git a/tests/testing.h b/tests/testing.h index 8e66d9b..c58da45 100644 --- a/tests/testing.h +++ b/tests/testing.h @@ -4,33 +4,19 @@ #include #include -#define TESTING_BEGIN() \ - do { \ - memset(&test_run, 0, sizeof(test_run)); \ - } while (0) - -#define TESTING_END() \ - do { \ - testing_end_msg(); \ - return 0 == test_run.fail_count ? EXIT_SUCCESS : EXIT_FAILURE; \ - } while (0) - -#define RUN_TEST(test) \ - do { \ - ++test_run.test_count; \ - test(); \ - } while (0) +#define TESTING_BEGIN() fail_count = 0 +#define TESTING_END() return 0 == fail_count ? EXIT_SUCCESS : EXIT_FAILURE +#define RUN_TEST(test) test() #define ASSERT_FAIL() \ do { \ - ++test_run.fail_count; \ + ++fail_count; \ testing_fail_msg(__func__, __FILE__, __LINE__); \ return; \ } while (0) #define ASSERT_TRUE(p) \ do { \ - ++test_run.assertion_count; \ if (!(p)) \ ASSERT_FAIL(); \ } while (0) @@ -46,15 +32,8 @@ #define ASSERT_LE(x, y) ASSERT_TRUE((y) <= (x)) #define ASSERT_MEM_EQUAL(p, q, n) ASSERT_TRUE(memcmp(p, q, n) == 0) -typedef struct { - int test_count; - int fail_count; - int assertion_count; -} test_run_t; - -extern test_run_t test_run; +extern int fail_count; void testing_fail_msg(const char *func, const char *file, int line); -void testing_end_msg(void); #endif