diff options
author | Vicent Marti <tanoku@gmail.com> | 2011-03-03 18:19:05 +0200 |
---|---|---|
committer | Vicent Marti <tanoku@gmail.com> | 2011-03-03 20:23:52 +0200 |
commit | 3dccfed16382c64370dd0fd88668c9d9accae6ed (patch) | |
tree | 21406b78ecda452244d9ceb64e5ac9ea8337ffd9 /tests/test_lib.h | |
parent | 8fc050961c6f5d3bc8f2bc27799922bebae4b743 (diff) | |
download | libgit2-3dccfed16382c64370dd0fd88668c9d9accae6ed.tar.gz |
Cleanup the testing toolkit
Tests are now declared with detailed descriptions and a short test name:
BEGIN_TEST(the_test0, "this is an example test that does something")
...
END_TEST
Modules are declared through a simple macro interface:
BEGIN_MODULE(mod_name)
ADD_TEST(the_test0);
...
END_MODULE
Error messages when tests fail have been greatly improved.
Signed-off-by: Vicent Marti <tanoku@gmail.com>
Diffstat (limited to 'tests/test_lib.h')
-rwxr-xr-x | tests/test_lib.h | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/tests/test_lib.h b/tests/test_lib.h index ae384ba4d..d0b62c8d4 100755 --- a/tests/test_lib.h +++ b/tests/test_lib.h @@ -9,13 +9,23 @@ #include "common.h" #include <git2.h> -#define ADD_TEST(SUITE, MODULE, TEST) \ - git_testsuite_add(SUITE, git_test_new(MODULE "::" #TEST, &_gittest__##TEST)) - -#define BEGIN_TEST(MODULE, TEST) \ - void _gittest__##TEST(git_test *_gittest) \ - { \ - assert(_gittest);\ +#define DECLARE_SUITE(SNAME) extern git_testsuite *libgit2_suite_##SNAME(void) +#define SUITE_NAME(SNAME) libgit2_suite_##SNAME + +#define BEGIN_SUITE(SNAME) \ + git_testsuite *libgit2_suite_##SNAME(void) {\ + git_testsuite *_gitsuite = git_testsuite_new(#SNAME); + +#define ADD_TEST(TNAME) \ + git_testsuite_add(_gitsuite, _gittest__##TNAME); + +#define END_SUITE \ + return _gitsuite;\ + } + +#define BEGIN_TEST(TNAME, DESC) \ + static void _gittest__##TNAME(git_test *_gittest) { \ + git_test__init(_gittest, #TNAME, DESC); \ {\ #define END_TEST }} @@ -23,21 +33,18 @@ typedef struct git_test git_test; typedef struct git_testsuite git_testsuite; typedef void (*git_testfunc)(git_test *); +typedef git_testsuite *(*libgit2_suite)(void); +void git_test__init(git_test *t, const char *name, const char *description); void git_test__fail(git_test *tc, const char *file, int line, const char *message); void git_test__assert(git_test *tc, const char *file, int line, const char *message, int condition); -#define must_pass(expr) git_test__assert(_gittest, __FILE__, __LINE__, "Method failed, " #expr, (expr) == 0) -#define must_fail(expr) git_test__assert(_gittest, __FILE__, __LINE__, "Expected method to fail, " #expr, (expr) < 0) -#define must_be_true(expr) git_test__assert(_gittest, __FILE__, __LINE__, "Expected " #expr, !!(expr)) +#define must_pass(expr) git_test__assert(_gittest, __FILE__, __LINE__, "Method failed: " #expr, (expr) == 0) +#define must_fail(expr) git_test__assert(_gittest, __FILE__, __LINE__, "Expected method to fail: " #expr, (expr) < 0) +#define must_be_true(expr) git_test__assert(_gittest, __FILE__, __LINE__, "Expression is not true: " #expr, !!(expr)) git_testsuite *git_testsuite_new(const char *name); -git_test *git_test_new(const char *name, git_testfunc function); - -void git_testsuite_free(git_testsuite *ts); - -void git_testsuite_add(git_testsuite *ts, git_test *tc); -void git_testsuite_addsuite(git_testsuite* ts, git_testsuite *ts2); +void git_testsuite_add(git_testsuite *ts, git_testfunc test); int git_testsuite_run(git_testsuite *ts); #endif |