Updated Branches: refs/heads/cfc-tests 64602a2a9 -> 7c4d3f5e0
Rework CFC tests - CFCTestBatch struct - Store list of all tests centrally - Correct exit code of test scripts - Rename and const some vars Project: http://git-wip-us.apache.org/repos/asf/lucy/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/7c4d3f5e Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/7c4d3f5e Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/7c4d3f5e Branch: refs/heads/cfc-tests Commit: 7c4d3f5e032b7bb8f2b497f7c32c0095e5f340b5 Parents: 64602a2 Author: Nick Wellnhofer <[email protected]> Authored: Tue Jan 29 03:29:05 2013 +0100 Committer: Nick Wellnhofer <[email protected]> Committed: Tue Jan 29 20:01:55 2013 +0100 ---------------------------------------------------------------------- clownfish/compiler/perl/lib/Clownfish/CFC.xs | 42 +--- clownfish/compiler/perl/t/core/001-util.t | 6 +- clownfish/compiler/perl/t/core/050-docucomment.t | 6 +- clownfish/compiler/perl/t/core/051-symbol.t | 6 +- clownfish/compiler/perl/t/core/052-version.t | 6 +- clownfish/compiler/perl/t/core/100-type.t | 6 +- clownfish/compiler/perl/t/core/200-function.t | 6 +- clownfish/compiler/perl/t/core/201-method.t | 6 +- clownfish/compiler/perl/t/core/300-variable.t | 6 +- clownfish/compiler/perl/t/core/301-param_list.t | 6 +- clownfish/compiler/perl/t/core/400-file_spec.t | 6 +- clownfish/compiler/perl/t/core/401-class.t | 6 +- clownfish/compiler/src/CFCTest.c | 218 +++++++++-------- clownfish/compiler/src/CFCTest.h | 57 ++--- clownfish/compiler/src/CFCTestClass.c | 15 +- clownfish/compiler/src/CFCTestDocuComment.c | 10 +- clownfish/compiler/src/CFCTestFileSpec.c | 15 +- clownfish/compiler/src/CFCTestFunction.c | 10 +- clownfish/compiler/src/CFCTestMethod.c | 13 +- clownfish/compiler/src/CFCTestParamList.c | 15 +- clownfish/compiler/src/CFCTestSymbol.c | 10 +- clownfish/compiler/src/CFCTestType.c | 13 +- clownfish/compiler/src/CFCTestUtil.c | 14 +- clownfish/compiler/src/CFCTestVariable.c | 15 +- clownfish/compiler/src/CFCTestVersion.c | 10 +- 25 files changed, 268 insertions(+), 255 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/perl/lib/Clownfish/CFC.xs ---------------------------------------------------------------------- diff --git a/clownfish/compiler/perl/lib/Clownfish/CFC.xs b/clownfish/compiler/perl/lib/Clownfish/CFC.xs index fc306f2..13ee4d4 100644 --- a/clownfish/compiler/perl/lib/Clownfish/CFC.xs +++ b/clownfish/compiler/perl/lib/Clownfish/CFC.xs @@ -2401,45 +2401,11 @@ CODE: CFCBase_decref((CFCBase*)self); OUTPUT: RETVAL -void +int run_batch(self, klass) CFCTest *self; const char *klass; -PPCODE: - if (strcmp(klass, "Clownfish::CFC::Model::Class") == 0) { - CFCTestClass_run(self); - } - else if (strcmp(klass, "Clownfish::CFC::Model::DocuComment") == 0) { - CFCTestDocuComment_run(self); - } - else if (strcmp(klass, "Clownfish::CFC::Model::FileSpec") == 0) { - CFCTestFileSpec_run(self); - } - else if (strcmp(klass, "Clownfish::CFC::Model::Function") == 0) { - CFCTestFunction_run(self); - } - else if (strcmp(klass, "Clownfish::CFC::Model::Method") == 0) { - CFCTestMethod_run(self); - } - else if (strcmp(klass, "Clownfish::CFC::Model::ParamList") == 0) { - CFCTestParamList_run(self); - } - else if (strcmp(klass, "Clownfish::CFC::Model::Symbol") == 0) { - CFCTestSymbol_run(self); - } - else if (strcmp(klass, "Clownfish::CFC::Model::Type") == 0) { - CFCTestType_run(self); - } - else if (strcmp(klass, "Clownfish::CFC::Model::Variable") == 0) { - CFCTestVariable_run(self); - } - else if (strcmp(klass, "Clownfish::CFC::Model::Version") == 0) { - CFCTestVersion_run(self); - } - else if (strcmp(klass, "Clownfish::CFC::Util") == 0) { - CFCTestUtil_run(self); - } - else { - croak("No tests found for class '%s'", klass); - } +CODE: + RETVAL = CFCTest_run_batch(self, klass); +OUTPUT: RETVAL http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/perl/t/core/001-util.t ---------------------------------------------------------------------- diff --git a/clownfish/compiler/perl/t/core/001-util.t b/clownfish/compiler/perl/t/core/001-util.t index 1508f25..b3ad862 100644 --- a/clownfish/compiler/perl/t/core/001-util.t +++ b/clownfish/compiler/perl/t/core/001-util.t @@ -18,6 +18,8 @@ use warnings; use Clownfish::CFC::Test; -my $test = Clownfish::CFC::Test->new; -$test->run_batch('Clownfish::CFC::Util'); +my $test = Clownfish::CFC::Test->new; +my $passed = $test->run_batch('Clownfish::CFC::Util'); + +exit($passed ? 0 : 1); http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/perl/t/core/050-docucomment.t ---------------------------------------------------------------------- diff --git a/clownfish/compiler/perl/t/core/050-docucomment.t b/clownfish/compiler/perl/t/core/050-docucomment.t index 5054cd3..09ad252 100644 --- a/clownfish/compiler/perl/t/core/050-docucomment.t +++ b/clownfish/compiler/perl/t/core/050-docucomment.t @@ -18,6 +18,8 @@ use warnings; use Clownfish::CFC::Test; -my $test = Clownfish::CFC::Test->new; -$test->run_batch('Clownfish::CFC::Model::DocuComment'); +my $test = Clownfish::CFC::Test->new; +my $passed = $test->run_batch('Clownfish::CFC::Model::DocuComment'); + +exit($passed ? 0 : 1); http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/perl/t/core/051-symbol.t ---------------------------------------------------------------------- diff --git a/clownfish/compiler/perl/t/core/051-symbol.t b/clownfish/compiler/perl/t/core/051-symbol.t index b3a7307..4209292 100644 --- a/clownfish/compiler/perl/t/core/051-symbol.t +++ b/clownfish/compiler/perl/t/core/051-symbol.t @@ -18,6 +18,8 @@ use warnings; use Clownfish::CFC::Test; -my $test = Clownfish::CFC::Test->new; -$test->run_batch('Clownfish::CFC::Model::Symbol'); +my $test = Clownfish::CFC::Test->new; +my $passed = $test->run_batch('Clownfish::CFC::Model::Symbol'); + +exit($passed ? 0 : 1); http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/perl/t/core/052-version.t ---------------------------------------------------------------------- diff --git a/clownfish/compiler/perl/t/core/052-version.t b/clownfish/compiler/perl/t/core/052-version.t index ef220bb..d5c2f63 100644 --- a/clownfish/compiler/perl/t/core/052-version.t +++ b/clownfish/compiler/perl/t/core/052-version.t @@ -18,6 +18,8 @@ use warnings; use Clownfish::CFC::Test; -my $test = Clownfish::CFC::Test->new; -$test->run_batch('Clownfish::CFC::Model::Version'); +my $test = Clownfish::CFC::Test->new; +my $passed = $test->run_batch('Clownfish::CFC::Model::Version'); + +exit($passed ? 0 : 1); http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/perl/t/core/100-type.t ---------------------------------------------------------------------- diff --git a/clownfish/compiler/perl/t/core/100-type.t b/clownfish/compiler/perl/t/core/100-type.t index 3a7cdc5..f5a0e24 100644 --- a/clownfish/compiler/perl/t/core/100-type.t +++ b/clownfish/compiler/perl/t/core/100-type.t @@ -18,6 +18,8 @@ use warnings; use Clownfish::CFC::Test; -my $test = Clownfish::CFC::Test->new; -$test->run_batch('Clownfish::CFC::Model::Type'); +my $test = Clownfish::CFC::Test->new; +my $passed = $test->run_batch('Clownfish::CFC::Model::Type'); + +exit($passed ? 0 : 1); http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/perl/t/core/200-function.t ---------------------------------------------------------------------- diff --git a/clownfish/compiler/perl/t/core/200-function.t b/clownfish/compiler/perl/t/core/200-function.t index e22af70..d70d2b8 100644 --- a/clownfish/compiler/perl/t/core/200-function.t +++ b/clownfish/compiler/perl/t/core/200-function.t @@ -18,6 +18,8 @@ use warnings; use Clownfish::CFC::Test; -my $test = Clownfish::CFC::Test->new; -$test->run_batch('Clownfish::CFC::Model::Function'); +my $test = Clownfish::CFC::Test->new; +my $passed = $test->run_batch('Clownfish::CFC::Model::Function'); + +exit($passed ? 0 : 1); http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/perl/t/core/201-method.t ---------------------------------------------------------------------- diff --git a/clownfish/compiler/perl/t/core/201-method.t b/clownfish/compiler/perl/t/core/201-method.t index c926593..0f24c25 100644 --- a/clownfish/compiler/perl/t/core/201-method.t +++ b/clownfish/compiler/perl/t/core/201-method.t @@ -18,6 +18,8 @@ use warnings; use Clownfish::CFC::Test; -my $test = Clownfish::CFC::Test->new; -$test->run_batch('Clownfish::CFC::Model::Method'); +my $test = Clownfish::CFC::Test->new; +my $passed = $test->run_batch('Clownfish::CFC::Model::Method'); + +exit($passed ? 0 : 1); http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/perl/t/core/300-variable.t ---------------------------------------------------------------------- diff --git a/clownfish/compiler/perl/t/core/300-variable.t b/clownfish/compiler/perl/t/core/300-variable.t index 9e0e1ed..c89f830 100644 --- a/clownfish/compiler/perl/t/core/300-variable.t +++ b/clownfish/compiler/perl/t/core/300-variable.t @@ -18,6 +18,8 @@ use warnings; use Clownfish::CFC::Test; -my $test = Clownfish::CFC::Test->new; -$test->run_batch('Clownfish::CFC::Model::Variable'); +my $test = Clownfish::CFC::Test->new; +my $passed = $test->run_batch('Clownfish::CFC::Model::Variable'); + +exit($passed ? 0 : 1); http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/perl/t/core/301-param_list.t ---------------------------------------------------------------------- diff --git a/clownfish/compiler/perl/t/core/301-param_list.t b/clownfish/compiler/perl/t/core/301-param_list.t index 66abb5e..23cdeb6 100644 --- a/clownfish/compiler/perl/t/core/301-param_list.t +++ b/clownfish/compiler/perl/t/core/301-param_list.t @@ -18,6 +18,8 @@ use warnings; use Clownfish::CFC::Test; -my $test = Clownfish::CFC::Test->new; -$test->run_batch('Clownfish::CFC::Model::ParamList'); +my $test = Clownfish::CFC::Test->new; +my $passed = $test->run_batch('Clownfish::CFC::Model::ParamList'); + +exit($passed ? 0 : 1); http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/perl/t/core/400-file_spec.t ---------------------------------------------------------------------- diff --git a/clownfish/compiler/perl/t/core/400-file_spec.t b/clownfish/compiler/perl/t/core/400-file_spec.t index 46e34c4..c3d25b4 100644 --- a/clownfish/compiler/perl/t/core/400-file_spec.t +++ b/clownfish/compiler/perl/t/core/400-file_spec.t @@ -18,6 +18,8 @@ use warnings; use Clownfish::CFC::Test; -my $test = Clownfish::CFC::Test->new; -$test->run_batch('Clownfish::CFC::Model::FileSpec'); +my $test = Clownfish::CFC::Test->new; +my $passed = $test->run_batch('Clownfish::CFC::Model::FileSpec'); + +exit($passed ? 0 : 1); http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/perl/t/core/401-class.t ---------------------------------------------------------------------- diff --git a/clownfish/compiler/perl/t/core/401-class.t b/clownfish/compiler/perl/t/core/401-class.t index f78e107..6e3b1b2 100644 --- a/clownfish/compiler/perl/t/core/401-class.t +++ b/clownfish/compiler/perl/t/core/401-class.t @@ -18,6 +18,8 @@ use warnings; use Clownfish::CFC::Test; -my $test = Clownfish::CFC::Test->new; -$test->run_batch('Clownfish::CFC::Model::Class'); +my $test = Clownfish::CFC::Test->new; +my $passed = $test->run_batch('Clownfish::CFC::Model::Class'); + +exit($passed ? 0 : 1); http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/src/CFCTest.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCTest.c b/clownfish/compiler/src/CFCTest.c index 352cdd1..e4f6e4c 100644 --- a/clownfish/compiler/src/CFCTest.c +++ b/clownfish/compiler/src/CFCTest.c @@ -25,42 +25,34 @@ #include "CFCParser.h" #include "CFCUtil.h" -struct CFCTestFormatter { - void (*start_batch)(const char *name, int num_planned); +typedef struct CFCTestFormatter { + void (*batch_prologue)(const CFCTestBatch *batch); void (*vtest_result)(int pass, int test_num, const char *fmt, va_list args); void (*test_comment)(const char *fmt, ...); void (*batch_comment)(const char *fmt, ...); - void (*summary)(CFCTest *test); -}; -typedef struct CFCTestFormatter CFCTestFormatter; + void (*summary)(const CFCTest *test); +} CFCTestFormatter; struct CFCTest { CFCBase base; - CFCTestFormatter *formatter; + const CFCTestFormatter *formatter; int num_tests; int num_tests_failed; int num_batches; int num_batches_failed; - int batch_num_tests; - int batch_num_failed; - int batch_num_planned; + int num_tests_in_batch; + int num_failed_in_batch; }; -const static CFCMeta CFCTEST_META = { - "Clownfish::CFC::Test", - sizeof(CFCTest), - (CFCBase_destroy_t)CFCTest_destroy -}; +static int +S_do_run_batch(CFCTest *self, const CFCTestBatch *batch); static void S_vtest_true(CFCTest *self, int cond, const char *fmt, va_list args); static void -S_finish_batch(CFCTest *self); - -static void -S_format_cfish_start_batch(const char *name, int num_planned); +S_format_cfish_batch_prologue(const CFCTestBatch *batch); static void S_format_cfish_vtest_result(int pass, int test_num, const char *fmt, @@ -73,22 +65,14 @@ static void S_format_cfish_batch_comment(const char *fmt, ...); static void -S_format_cfish_summary(CFCTest *test); - -static CFCTestFormatter S_formatter_cfish = { - S_format_cfish_start_batch, - S_format_cfish_vtest_result, - S_format_cfish_test_comment, - S_format_cfish_batch_comment, - S_format_cfish_summary -}; +S_format_cfish_summary(const CFCTest *test); static void -S_format_tap_start_batch(const char *name, int num_planned); +S_format_tap_batch_prologue(const CFCTestBatch *batch); static void S_format_tap_vtest_result(int pass, int test_num, const char *fmt, - va_list args); + va_list args); static void S_format_tap_test_comment(const char *fmt, ...); @@ -97,16 +81,45 @@ static void S_format_tap_batch_comment(const char *fmt, ...); static void -S_format_tap_summary(CFCTest *test); +S_format_tap_summary(const CFCTest *test); + +static const CFCMeta CFCTEST_META = { + "Clownfish::CFC::Test", + sizeof(CFCTest), + (CFCBase_destroy_t)CFCTest_destroy +}; -static CFCTestFormatter S_formatter_tap = { - S_format_tap_start_batch, +static const CFCTestFormatter S_formatter_cfish = { + S_format_cfish_batch_prologue, + S_format_cfish_vtest_result, + S_format_cfish_test_comment, + S_format_cfish_batch_comment, + S_format_cfish_summary +}; + +static const CFCTestFormatter S_formatter_tap = { + S_format_tap_batch_prologue, S_format_tap_vtest_result, S_format_tap_test_comment, S_format_tap_batch_comment, S_format_tap_summary }; +static const CFCTestBatch *const S_batches[] = { + &CFCTEST_BATCH_UTIL, + &CFCTEST_BATCH_DOCU_COMMENT, + &CFCTEST_BATCH_SYMBOL, + &CFCTEST_BATCH_VERSION, + &CFCTEST_BATCH_TYPE, + &CFCTEST_BATCH_FUNCTION, + &CFCTEST_BATCH_METHOD, + &CFCTEST_BATCH_VARIABLE, + &CFCTEST_BATCH_PARAM_LIST, + &CFCTEST_BATCH_FILE_SPEC, + &CFCTEST_BATCH_CLASS, + NULL +}; + CFCTest* CFCTest_new(const char *formatter_name) { CFCTest *self = (CFCTest*)CFCBase_allocate(&CFCTEST_META); @@ -125,13 +138,12 @@ CFCTest_init(CFCTest *self, const char *formatter_name) { CFCUtil_die("Unknown formatter name '%s'", formatter_name); } - self->num_tests = 0; - self->num_tests_failed = 0; - self->num_batches = 0; - self->num_batches_failed = 0; - self->batch_num_planned = 0; - self->batch_num_tests = 0; - self->batch_num_failed = 0; + self->num_tests = 0; + self->num_tests_failed = 0; + self->num_batches = 0; + self->num_batches_failed = 0; + self->num_tests_in_batch = 0; + self->num_failed_in_batch = 0; return self; } @@ -141,13 +153,59 @@ CFCTest_destroy(CFCTest *self) { CFCBase_destroy((CFCBase*)self); } -void -CFCTest_start_batch(CFCTest *self, const char *name, int num_planned) { - S_finish_batch(self); +int +CFCTest_run_all(CFCTest *self) { + int failed = 0; - self->formatter->start_batch(name, num_planned); + for (int i = 0; S_batches[i]; ++i) { + if (!S_do_run_batch(self, S_batches[i])) { failed = 1; } + } - self->batch_num_planned = num_planned; + return !failed; +} + +int +CFCTest_run_batch(CFCTest *self, const char *name) { + for (int i = 0; S_batches[i]; ++i) { + const CFCTestBatch *batch = S_batches[i]; + if (strcmp(batch->name, name) == 0) { + return S_do_run_batch(self, batch); + } + } + + CFCUtil_die("Test batch '%s' not found", name); + return 0; +} + +static int +S_do_run_batch(CFCTest *self, const CFCTestBatch *batch) { + self->formatter->batch_prologue(batch); + + batch->run(self); + + int failed = 0; + void (*comment)(const char *fmt, ...) = self->formatter->batch_comment; + + if (self->num_failed_in_batch > 0) { + failed = 1; + comment("%d/%d tests failed.\n", self->num_failed_in_batch, + self->num_tests_in_batch); + } + if (self->num_tests_in_batch != batch->num_planned) { + failed = 1; + comment("Bad plan: You planned %d tests but ran %d.\n", + batch->num_planned, self->num_tests_in_batch); + } + + if (failed) { + self->num_batches_failed += 1; + } + + self->num_batches += 1; + self->num_tests_in_batch = 0; + self->num_failed_in_batch = 0; + + return !failed; } void @@ -192,14 +250,12 @@ CFCTest_test_int_equals(CFCTest *self, long result, long expected, void CFCTest_skip(CFCTest *self, int num) { - self->num_tests += num; - self->batch_num_tests += num; + self->num_tests += num; + self->num_tests_in_batch += num; } int CFCTest_finish(CFCTest *self) { - S_finish_batch(self); - self->formatter->summary(self); return self->num_batches != 0 && self->num_batches_failed == 0; @@ -207,60 +263,20 @@ CFCTest_finish(CFCTest *self) { static void S_vtest_true(CFCTest *self, int cond, const char *fmt, va_list args) { - self->num_tests += 1; - self->batch_num_tests += 1; + self->num_tests += 1; + self->num_tests_in_batch += 1; if (!cond) { - self->num_tests_failed += 1; - self->batch_num_failed += 1; + self->num_tests_failed += 1; + self->num_failed_in_batch += 1; } - self->formatter->vtest_result(cond, self->batch_num_tests, fmt, args); + self->formatter->vtest_result(cond, self->num_tests_in_batch, fmt, args); } static void -S_finish_batch(CFCTest *self) { - int batch_failed = 0; - void (*batch_comment)(const char *fmt, ...) - = self->formatter->batch_comment; - - if (self->batch_num_planned == 0) { - if (self->batch_num_tests != 0) { - batch_failed = 1; - batch_comment("Bad plan: You ran %d tests without plan.\n", - self->batch_num_tests); - } - else { - // No tests run - return; - } - } - else { - if (self->batch_num_failed > 0) { - batch_failed = 1; - batch_comment("%d/%d tests failed.\n", self->batch_num_failed, - self->batch_num_tests); - } - if (self->batch_num_tests != self->batch_num_planned) { - batch_failed = 1; - batch_comment("Bad plan: You planned %d tests but ran %d.\n", - self->batch_num_planned, self->batch_num_tests); - } - } - - if (batch_failed) { - self->num_batches_failed += 1; - } - - self->num_batches += 1; - self->batch_num_planned = 0; - self->batch_num_tests = 0; - self->batch_num_failed = 0; -} - -static void -S_format_cfish_start_batch(const char *name, int num_planned) { - printf("Testing %s...\n", name); +S_format_cfish_batch_prologue(const CFCTestBatch *batch) { + printf("Testing %s...\n", batch->name); } static void @@ -294,24 +310,26 @@ S_format_cfish_batch_comment(const char *fmt, ...) { } static void -S_format_cfish_summary(CFCTest *test) { +S_format_cfish_summary(const CFCTest *test) { if (test->num_batches == 0) { printf("No tests planned or run.\n"); } else if (test->num_batches_failed == 0) { + printf("%d batches passed. %d tests passed.\n", + test->num_batches, test->num_tests); printf("Result: PASS\n"); } else { - printf("Result: FAIL\n"); printf("%d/%d batches failed. %d/%d tests failed.\n", test->num_batches_failed, test->num_batches, test->num_tests_failed, test->num_tests); + printf("Result: FAIL\n"); } } static void -S_format_tap_start_batch(const char *name, int num_planned) { - printf("1..%d\n", num_planned); +S_format_tap_batch_prologue(const CFCTestBatch *batch) { + printf("1..%d\n", batch->num_planned); } static void @@ -344,7 +362,7 @@ S_format_tap_batch_comment(const char *fmt, ...) { } static void -S_format_tap_summary(CFCTest *test) { +S_format_tap_summary(const CFCTest *test) { } struct CFCParcel* http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/src/CFCTest.h ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCTest.h b/clownfish/compiler/src/CFCTest.h index ecada06..8b87b3c 100644 --- a/clownfish/compiler/src/CFCTest.h +++ b/clownfish/compiler/src/CFCTest.h @@ -24,6 +24,13 @@ #endif typedef struct CFCTest CFCTest; + +typedef struct CFCTestBatch { + const char *name; + int num_planned; + void (*run)(CFCTest *test); +} CFCTestBatch; + struct CFCClass; struct CFCFunction; struct CFCMethod; @@ -42,8 +49,11 @@ CFCTest_init(CFCTest *self, const char *formatter_name); void CFCTest_destroy(CFCTest *self); -void -CFCTest_start_batch(CFCTest *self, const char *name, int num_planned); +int +CFCTest_run_all(CFCTest *self); + +int +CFCTest_run_batch(CFCTest *self, const char *name); void CFCTest_test_true(CFCTest *self, int cond, const char *fmt, ...); @@ -86,38 +96,17 @@ CFCTest_parse_method(CFCTest *test, struct CFCParser *parser, const char *src); struct CFCClass* CFCTest_parse_class(CFCTest *test, struct CFCParser *parser, const char *src); -void -CFCTestClass_run(CFCTest *test); - -void -CFCTestDocuComment_run(CFCTest *test); - -void -CFCTestFileSpec_run(CFCTest *test); - -void -CFCTestFunction_run(CFCTest *test); - -void -CFCTestMethod_run(CFCTest *test); - -void -CFCTestParamList_run(CFCTest *test); - -void -CFCTestSymbol_run(CFCTest *test); - -void -CFCTestType_run(CFCTest *test); - -void -CFCTestUtil_run(CFCTest *test); - -void -CFCTestVariable_run(CFCTest *test); - -void -CFCTestVersion_run(CFCTest *test); +extern const CFCTestBatch CFCTEST_BATCH_CLASS; +extern const CFCTestBatch CFCTEST_BATCH_DOCU_COMMENT; +extern const CFCTestBatch CFCTEST_BATCH_FILE_SPEC; +extern const CFCTestBatch CFCTEST_BATCH_FUNCTION; +extern const CFCTestBatch CFCTEST_BATCH_METHOD; +extern const CFCTestBatch CFCTEST_BATCH_PARAM_LIST; +extern const CFCTestBatch CFCTEST_BATCH_SYMBOL; +extern const CFCTestBatch CFCTEST_BATCH_TYPE; +extern const CFCTestBatch CFCTEST_BATCH_UTIL; +extern const CFCTestBatch CFCTEST_BATCH_VARIABLE; +extern const CFCTestBatch CFCTEST_BATCH_VERSION; #endif /* H_TEST_CFC */ http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/src/CFCTestClass.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCTestClass.c b/clownfish/compiler/src/CFCTestClass.c index 50b4024..f2c4fac 100644 --- a/clownfish/compiler/src/CFCTestClass.c +++ b/clownfish/compiler/src/CFCTestClass.c @@ -32,20 +32,19 @@ #include "CFCVariable.h" static void -S_run_basic_tests(CFCTest *test); +S_run_tests(CFCTest *test); static int S_has_symbol(CFCSymbol **symbols, const char *micro_sym); -void -CFCTestClass_run(CFCTest *test) { - CFCTest_start_batch(test, "class", 83); - - S_run_basic_tests(test); -} +const CFCTestBatch CFCTEST_BATCH_CLASS = { + "Clownfish::CFC::Model::Class", + 83, + S_run_tests +}; static void -S_run_basic_tests(CFCTest *test) { +S_run_tests(CFCTest *test) { CFCParser *parser = CFCParser_new(); CFCParcel *neato = CFCParcel_new("Neato", NULL, NULL); http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/src/CFCTestDocuComment.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCTestDocuComment.c b/clownfish/compiler/src/CFCTestDocuComment.c index c17f27d..a5121cd 100644 --- a/clownfish/compiler/src/CFCTestDocuComment.c +++ b/clownfish/compiler/src/CFCTestDocuComment.c @@ -24,11 +24,11 @@ static void S_run_tests(CFCTest *test); -void -CFCTestDocuComment_run(CFCTest *test) { - CFCTest_start_batch(test, "docucomment", 15); - S_run_tests(test); -} +const CFCTestBatch CFCTEST_BATCH_DOCU_COMMENT = { + "Clownfish::CFC::Model::DocuComment", + 15, + S_run_tests +}; static void S_run_tests(CFCTest *test) { http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/src/CFCTestFileSpec.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCTestFileSpec.c b/clownfish/compiler/src/CFCTestFileSpec.c index 2cddfa8..7fdb2d8 100644 --- a/clownfish/compiler/src/CFCTestFileSpec.c +++ b/clownfish/compiler/src/CFCTestFileSpec.c @@ -20,17 +20,16 @@ #include "CFCTest.h" static void -S_run_basic_tests(CFCTest *test); +S_run_tests(CFCTest *test); -void -CFCTestFileSpec_run(CFCTest *test) { - CFCTest_start_batch(test, "file_spec", 4); - - S_run_basic_tests(test); -} +const CFCTestBatch CFCTEST_BATCH_FILE_SPEC = { + "Clownfish::CFC::Model::FileSpec", + 4, + S_run_tests +}; static void -S_run_basic_tests(CFCTest *test) { +S_run_tests(CFCTest *test) { { CFCFileSpec *file_spec = CFCFileSpec_new("Clownfish/_include", "Stuff/Thing", 0); http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/src/CFCTestFunction.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCTestFunction.c b/clownfish/compiler/src/CFCTestFunction.c index 8907254..4cd6967 100644 --- a/clownfish/compiler/src/CFCTestFunction.c +++ b/clownfish/compiler/src/CFCTestFunction.c @@ -26,11 +26,11 @@ static void S_run_tests(CFCTest *test); -void -CFCTestFunction_run(CFCTest *test) { - CFCTest_start_batch(test, "function", 11); - S_run_tests(test); -} +const CFCTestBatch CFCTEST_BATCH_FUNCTION = { + "Clownfish::CFC::Model::Function", + 11, + S_run_tests +}; static void S_run_tests(CFCTest *test) { http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/src/CFCTestMethod.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCTestMethod.c b/clownfish/compiler/src/CFCTestMethod.c index 0144300..157f7e4 100644 --- a/clownfish/compiler/src/CFCTestMethod.c +++ b/clownfish/compiler/src/CFCTestMethod.c @@ -25,6 +25,9 @@ #include "CFCType.h" static void +S_run_tests(CFCTest *test); + +static void S_run_basic_tests(CFCTest *test); static void @@ -36,10 +39,14 @@ S_run_overridden_tests(CFCTest *test); static void S_run_final_tests(CFCTest *test); -void -CFCTestMethod_run(CFCTest *test) { - CFCTest_start_batch(test, "method", 62); +const CFCTestBatch CFCTEST_BATCH_METHOD = { + "Clownfish::CFC::Model::Method", + 62, + S_run_tests +}; +static void +S_run_tests(CFCTest *test) { S_run_basic_tests(test); S_run_parser_tests(test); S_run_overridden_tests(test); http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/src/CFCTestParamList.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCTestParamList.c b/clownfish/compiler/src/CFCTestParamList.c index 16f0a1e..dd43d5b 100644 --- a/clownfish/compiler/src/CFCTestParamList.c +++ b/clownfish/compiler/src/CFCTestParamList.c @@ -23,17 +23,16 @@ #include "CFCVariable.h" static void -S_run_basic_tests(CFCTest *test); +S_run_tests(CFCTest *test); -void -CFCTestParamList_run(CFCTest *test) { - CFCTest_start_batch(test, "param_list", 16); - - S_run_basic_tests(test); -} +const CFCTestBatch CFCTEST_BATCH_PARAM_LIST = { + "Clownfish::CFC::Model::ParamList", + 16, + S_run_tests +}; static void -S_run_basic_tests(CFCTest *test) { +S_run_tests(CFCTest *test) { CFCParser *parser = CFCParser_new(); CFCParcel *neato_parcel = CFCTest_parse_parcel(test, parser, "parcel Neato;"); http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/src/CFCTestSymbol.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCTestSymbol.c b/clownfish/compiler/src/CFCTestSymbol.c index 3321f6c..7dfe8d9 100644 --- a/clownfish/compiler/src/CFCTestSymbol.c +++ b/clownfish/compiler/src/CFCTestSymbol.c @@ -23,11 +23,11 @@ static void S_run_tests(CFCTest *test); -void -CFCTestSymbol_run(CFCTest *test) { - CFCTest_start_batch(test, "symbol", 28); - S_run_tests(test); -} +const CFCTestBatch CFCTEST_BATCH_SYMBOL = { + "Clownfish::CFC::Model::Symbol", + 28, + S_run_tests +}; static void S_run_tests(CFCTest *test) { http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/src/CFCTestType.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCTestType.c b/clownfish/compiler/src/CFCTestType.c index 0d971d4..11e5102 100644 --- a/clownfish/compiler/src/CFCTestType.c +++ b/clownfish/compiler/src/CFCTestType.c @@ -23,6 +23,9 @@ #include "CFCUtil.h" static void +S_run_tests(CFCTest *test); + +static void S_run_basic_tests(CFCTest *test); static void @@ -49,10 +52,14 @@ S_run_arbitrary_tests(CFCTest *test); static void S_run_composite_tests(CFCTest *test); -void -CFCTestType_run(CFCTest *test) { - CFCTest_start_batch(test, "type", 349); +const CFCTestBatch CFCTEST_BATCH_TYPE = { + "Clownfish::CFC::Model::Type", + 349, + S_run_tests +}; +static void +S_run_tests(CFCTest *test) { S_run_basic_tests(test); S_run_primitive_tests(test); S_run_integer_tests(test); http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/src/CFCTestUtil.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCTestUtil.c b/clownfish/compiler/src/CFCTestUtil.c index 4918255..27fbeec 100644 --- a/clownfish/compiler/src/CFCTestUtil.c +++ b/clownfish/compiler/src/CFCTestUtil.c @@ -26,6 +26,9 @@ #include "CFCTest.h" static void +S_run_tests(CFCTest *test); + +static void S_run_string_tests(CFCTest *test); static void @@ -37,9 +40,14 @@ S_get_file_mtime(const char *path); static void S_set_file_times(const char *path, time_t time); -void -CFCTestUtil_run(CFCTest *test) { - CFCTest_start_batch(test, "util", 15); +const CFCTestBatch CFCTEST_BATCH_UTIL = { + "Clownfish::CFC::Util", + 15, + S_run_tests +}; + +static void +S_run_tests(CFCTest *test) { S_run_string_tests(test); S_run_file_tests(test); } http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/src/CFCTestVariable.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCTestVariable.c b/clownfish/compiler/src/CFCTestVariable.c index f6673e0..d7093cf 100644 --- a/clownfish/compiler/src/CFCTestVariable.c +++ b/clownfish/compiler/src/CFCTestVariable.c @@ -24,17 +24,16 @@ #include "CFCVariable.h" static void -S_run_basic_tests(CFCTest *test); +S_run_tests(CFCTest *test); -void -CFCTestVariable_run(CFCTest *test) { - CFCTest_start_batch(test, "variable", 27); - - S_run_basic_tests(test); -} +const CFCTestBatch CFCTEST_BATCH_VARIABLE = { + "Clownfish::CFC::Model::Variable", + 27, + S_run_tests +}; static void -S_run_basic_tests(CFCTest *test) { +S_run_tests(CFCTest *test) { CFCParser *parser = CFCParser_new(); CFCParcel *neato_parcel = CFCTest_parse_parcel(test, parser, "parcel Neato;"); http://git-wip-us.apache.org/repos/asf/lucy/blob/7c4d3f5e/clownfish/compiler/src/CFCTestVersion.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCTestVersion.c b/clownfish/compiler/src/CFCTestVersion.c index fcd89cb..693e01b 100644 --- a/clownfish/compiler/src/CFCTestVersion.c +++ b/clownfish/compiler/src/CFCTestVersion.c @@ -22,11 +22,11 @@ static void S_run_tests(CFCTest *test); -void -CFCTestVersion_run(CFCTest *test) { - CFCTest_start_batch(test, "version", 11); - S_run_tests(test); -} +const CFCTestBatch CFCTEST_BATCH_VERSION = { + "Clownfish::CFC::Model::Version", + 11, + S_run_tests +}; static void S_run_tests(CFCTest *test) {
