diff options
Diffstat (limited to 'source4/torture/ui.h')
-rw-r--r-- | source4/torture/ui.h | 100 |
1 files changed, 78 insertions, 22 deletions
diff --git a/source4/torture/ui.h b/source4/torture/ui.h index 9c19d99f1c..ccd50095a5 100644 --- a/source4/torture/ui.h +++ b/source4/torture/ui.h @@ -19,7 +19,12 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#ifndef __TORTURE_UI_H__ +#define __TORTURE_UI_H__ + struct torture_test; +struct torture_context; +struct torture_tcase; enum torture_result { TORTURE_OK=0, @@ -30,35 +35,82 @@ enum torture_result { struct torture_ui_ops { - void (*comment) (struct torture_test *, const char *); - void (*test_start) (struct torture_test *); - void (*test_result) (struct torture_test *, enum torture_result, + void (*comment) (struct torture_context *, const char *); + void (*tcase_start) (struct torture_context *, struct torture_tcase *); + void (*tcase_finish) (struct torture_context *, struct torture_tcase *); + void (*test_start) (struct torture_context *, + struct torture_tcase *, + struct torture_test *); + void (*test_result) (struct torture_context *, enum torture_result, const char *reason); }; -struct torture_test -{ - char *name; - char *description; - - void *ui_data; - - enum torture_result result; - - struct torture_context *context; -}; - struct torture_context { const struct torture_ui_ops *ui_ops; void *ui_data; + struct torture_test *active_test; + struct torture_tcase *active_tcase; + int skipped; int todo; int success; int failed; }; +struct torture_suite +{ + const char *name; + const char *description; + struct torture_tcase { + const char *name; + const char *description; + BOOL (*setup) (struct torture_context *tcase, void **data); + BOOL (*teardown) (struct torture_context *tcase, void *data); + BOOL fixture_persistent; + const void *data; + struct torture_test { + const char *name; + const char *description; + const void *data; + BOOL (*run) (struct torture_context *test, + const void *tcase_data, + const void *test_data); + struct torture_test *prev, *next; + } *tests; + struct torture_tcase *prev, *next; + } *testcases; +}; + +void torture_register_suite(struct torture_suite *suite); +struct torture_suite *torture_suite_create(TALLOC_CTX *ctx, const char *name); +void torture_tcase_set_fixture(struct torture_tcase *tcase, + BOOL (*setup) (struct torture_context *, void **), + BOOL (*teardown) (struct torture_context *, void *)); +struct torture_test *torture_tcase_add_test(struct torture_tcase *tcase, + const char *name, + BOOL (*run) (struct torture_context *test, const void *tcase_data, + const void *test_data), + const void *test_data); +struct torture_tcase *torture_suite_add_tcase(struct torture_suite *suite, + const char *name); +struct torture_tcase *torture_suite_add_simple_tcase( + struct torture_suite *suite, + const char *name, + BOOL (*run) (struct torture_context *test, const void *test_data), + const void *data); + +BOOL torture_run_suite(struct torture_context *context, + struct torture_suite *suite); + +BOOL torture_run_tcase(struct torture_context *context, + struct torture_tcase *tcase); + +BOOL torture_run_test(struct torture_context *context, + struct torture_tcase *tcase, + struct torture_test *test); + #define torture_assert(ctx,expr,string) \ if (!(expr)) { \ torture_fail(ctx, "%s:%d (%s): %s", __FILE__, __LINE__, string, \ @@ -103,10 +155,14 @@ struct torture_context #define torture_assert_werr_ok(ctx,expr,string) \ torture_assert_werr_equal(ctx,expr,WERR_OK,string) -struct torture_test *torture_test(struct torture_context *ctx, const char *name, const char *description); -struct torture_test *torture_subtest(struct torture_test *parent, const char *name, const char *description); -void torture_comment(struct torture_test *test, const char *comment, ...) _PRINTF_ATTRIBUTE(2,3); -void torture_ok(struct torture_test *test); -void torture_fail(struct torture_test *test, const char *reason, ...) _PRINTF_ATTRIBUTE(2,3); -void torture_skip(struct torture_test *test, const char *reason, ...) _PRINTF_ATTRIBUTE(2,3); -BOOL torture_result(struct torture_context *torture); +void torture_comment(struct torture_context *test, const char *comment, ...) _PRINTF_ATTRIBUTE(2,3); +void torture_ok(struct torture_context *test); +void torture_fail(struct torture_context *test, const char *reason, ...) _PRINTF_ATTRIBUTE(2,3); +void torture_skip(struct torture_context *test, const char *reason, ...) _PRINTF_ATTRIBUTE(2,3); +const char *torture_setting(struct torture_context *test, const char *name, + const char *default_value); + +/* Helper function commonly used */ +BOOL torture_teardown_free(struct torture_context *torture, void *data); + +#endif /* __TORTURE_UI_H__ */ |