summaryrefslogtreecommitdiff
path: root/tests/test_lib.h
diff options
context:
space:
mode:
authorVicent Marti <tanoku@gmail.com>2011-03-03 18:19:05 +0200
committerVicent Marti <tanoku@gmail.com>2011-03-03 20:23:52 +0200
commit3dccfed16382c64370dd0fd88668c9d9accae6ed (patch)
tree21406b78ecda452244d9ceb64e5ac9ea8337ffd9 /tests/test_lib.h
parent8fc050961c6f5d3bc8f2bc27799922bebae4b743 (diff)
downloadlibgit2-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-xtests/test_lib.h39
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