From f605f260017a89e90a41f6cd27e765c24c18789b Mon Sep 17 00:00:00 2001 From: Snaipe Date: Sat, 31 Jan 2015 16:26:13 +0100 Subject: [PATCH] Changed pre/post hooks to use the weak symbol mechanism --- include/criterion.h | 6 +++--- samples/simple.c | 13 +++++++++++-- src/runner.c | 7 ++----- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/include/criterion.h b/include/criterion.h index 5cd64c9..dbbd369 100644 --- a/include/criterion.h +++ b/include/criterion.h @@ -39,8 +39,8 @@ struct criterion_test { const struct criterion_test_extra_data *data; }; -extern void (*criterion_pre_tests)(void); -extern void (*criterion_post_tests)(void); +extern __attribute__ ((weak)) void criterion_init(void); +extern __attribute__ ((weak)) void criterion_fini(void); # define SECTION_(Name) __attribute__((section(Name))) # define IDENTIFIER_(Category, Name, Suffix) \ @@ -48,7 +48,7 @@ extern void (*criterion_post_tests)(void); # define TEST_PROTOTYPE_(Category, Name) \ void IDENTIFIER_(Category, Name, impl)(void) -# define test(Category, Name, Args...) \ +# define Test(Category, Name, Args...) \ TEST_PROTOTYPE_(Category, Name); \ struct criterion_test_extra_data IDENTIFIER_(Category, Name, extra) = { \ .sentinel_ = 0, \ diff --git a/samples/simple.c b/samples/simple.c index 8e2051c..b63c89d 100644 --- a/samples/simple.c +++ b/samples/simple.c @@ -1,9 +1,18 @@ +#include #include #include "criterion.h" -test(misc, simple) { +Test(misc, simple) { } -test(misc, failing) { +Test(misc, failing) { exit(1); } + +/*void criterion_init(void) { + puts("criterion_init"); +}*/ + +void criterion_fini(void) { + puts("criterion_fini"); +} diff --git a/src/runner.c b/src/runner.c index 10a338b..895f497 100644 --- a/src/runner.c +++ b/src/runner.c @@ -61,11 +61,8 @@ void run_all(void) { map_tests(run_test); } -void (*criterion_pre_tests)(void) = NULL; -void (*criterion_post_tests)(void) = NULL; - int main(void) { - (criterion_pre_tests ?: nothing)(); + (criterion_init ?: nothing)(); run_all(); - (criterion_post_tests ?: nothing)(); + (criterion_fini ?: nothing)(); }