diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2006-10-16 20:05:19 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:21:13 -0500 |
commit | 52e3f69a36b6ba6a589a8f768fbee77ee06b281c (patch) | |
tree | 4f77d34f1c12b2fb77f672ed2d989f7ad88d7ca6 /source4/torture/ui.c | |
parent | 3478bf1c238eaa82d9383f18dcb7d802aed06cd0 (diff) | |
download | samba-52e3f69a36b6ba6a589a8f768fbee77ee06b281c.tar.gz samba-52e3f69a36b6ba6a589a8f768fbee77ee06b281c.tar.bz2 samba-52e3f69a36b6ba6a589a8f768fbee77ee06b281c.zip |
r19343: Add support for external scripts/binaries that write results using the
'subunit' protocol. This allows us to easily plug EJS scripts or binaries that
can't depend on -ltorture into smbtorture. The protocol is very simple:
- write "comments" to stderr
Example output on stdout:
test: foo
success: foo
test: bar
success: bar
test: blah
failure: blah [
dummy.c:30: Expression 1 != 2 failed!
]
test: blie
skip: blie [
Iconv support not built in
]
I've already converted the talloc testsuite.
(This used to be commit e1742c14a247fabba969f8698108e73997d3f420)
Diffstat (limited to 'source4/torture/ui.c')
-rw-r--r-- | source4/torture/ui.c | 48 |
1 files changed, 32 insertions, 16 deletions
diff --git a/source4/torture/ui.c b/source4/torture/ui.c index c105f4ec9d..32b632a3e8 100644 --- a/source4/torture/ui.c +++ b/source4/torture/ui.c @@ -21,6 +21,7 @@ #include "includes.h" #include "torture/ui.h" +#include "torture/torture.h" #include "lib/util/dlinklist.h" void torture_comment(struct torture_context *context, @@ -67,7 +68,7 @@ void _torture_skip_ext(struct torture_context *context, struct torture_suite *torture_suite_create(TALLOC_CTX *ctx, const char *name) { - struct torture_suite *suite = talloc(ctx, struct torture_suite); + struct torture_suite *suite = talloc_zero(ctx, struct torture_suite); suite->name = talloc_strdup(suite, name); suite->testcases = NULL; @@ -146,6 +147,9 @@ BOOL torture_run_suite(struct torture_context *context, if (context->ui_ops->suite_start) context->ui_ops->suite_start(context, suite); + if (suite->path) + torture_subunit_run_suite(context, suite); + for (tcase = suite->testcases; tcase; tcase = tcase->next) { ret &= torture_run_tcase(context, tcase); } @@ -162,6 +166,30 @@ BOOL torture_run_suite(struct torture_context *context, return ret; } +void torture_ui_test_start(struct torture_context *context, + struct torture_tcase *tcase, + struct torture_test *test) +{ + if (context->ui_ops->test_start) + context->ui_ops->test_start(context, tcase, test); +} + +void torture_ui_test_result(struct torture_context *context, + enum torture_result result, + const char *comment) +{ + if (context->ui_ops->test_result) + context->ui_ops->test_result(context, result, comment); + + + switch (result) { + case TORTURE_SKIP: context->success++; break; + case TORTURE_FAIL: context->failed++; break; + case TORTURE_TODO: context->todo++; break; + case TORTURE_OK: context->success++; break; + } +} + static BOOL internal_torture_run_test(struct torture_context *context, struct torture_tcase *tcase, struct torture_test *test, @@ -182,8 +210,7 @@ static BOOL internal_torture_run_test(struct torture_context *context, context->active_tcase = tcase; context->active_test = test; - if (context->ui_ops->test_start) - context->ui_ops->test_start(context, tcase, test); + torture_ui_test_start(context, tcase, test); context->last_reason = NULL; context->last_result = TORTURE_OK; @@ -195,19 +222,8 @@ static BOOL internal_torture_run_test(struct torture_context *context, context->last_result = TORTURE_FAIL; } - if (context->ui_ops->test_result) - context->ui_ops->test_result(context, - context->last_result, - context->last_reason); - - - switch (context->last_result) { - case TORTURE_SKIP: context->success++; break; - case TORTURE_FAIL: context->failed++; break; - case TORTURE_TODO: context->todo++; break; - case TORTURE_OK: context->success++; break; - } - + torture_ui_test_result(context, context->last_result, context->last_reason); + talloc_free(context->last_reason); context->active_test = NULL; |