r21055: Fix executable bit.
[gd/samba-autobuild/.git] / source4 / torture / ui.h
index 36457e6a84d9545a49a7c1c64ae110eda085b5c0..8c4d3b6729952482daabb008b05af67a333cf694 100644 (file)
@@ -29,8 +29,8 @@ struct torture_tcase;
 
 enum torture_result { 
        TORTURE_OK=0, 
-       TORTURE_FAIL=1, 
-       TORTURE_TODO=2, 
+       TORTURE_FAIL=1,
+       TORTURE_ERROR=2,
        TORTURE_SKIP=3
 };
 
@@ -52,6 +52,14 @@ struct torture_ui_ops
                                                 enum torture_result, const char *reason);
 };
 
+void torture_ui_test_start(struct torture_context *context,
+                                                          struct torture_tcase *tcase,
+                                                          struct torture_test *test);
+
+void torture_ui_test_result(struct torture_context *context,
+                                                               enum torture_result result,
+                                                               const char *comment);
+
 /*
  * Holds information about a specific run of the testsuite. 
  * The data in this structure should be considered private to 
@@ -67,19 +75,17 @@ struct torture_context
        const struct torture_ui_ops *ui_ops;
        void *ui_data;
 
+       char *active_testname;
        struct torture_test *active_test;
        struct torture_tcase *active_tcase;
 
-       int skipped;
-       int todo;
-       int success;
-       int failed;
-
        bool quiet; /* Whether tests should avoid writing output to stdout */
 
        enum torture_result last_result;
        char *last_reason;
 
+       bool returncode;
+
        char *outputdir;
        int level;
 };
@@ -181,23 +187,20 @@ bool torture_run_test(struct torture_context *context,
                                          struct torture_tcase *tcase,
                                          struct torture_test *test);
 
-void _torture_fail_ext(struct torture_context *test, const char *reason, ...) PRINTF_ATTRIBUTE(2,3);
 void torture_comment(struct torture_context *test, const char *comment, ...) PRINTF_ATTRIBUTE(2,3);
-void _torture_skip_ext(struct torture_context *test, const char *reason, ...) PRINTF_ATTRIBUTE(2,3);
+void torture_result(struct torture_context *test, 
+                       enum torture_result, const char *reason, ...) PRINTF_ATTRIBUTE(3,4);
 
 #define torture_assert(torture_ctx,expr,cmt) \
        if (!(expr)) { \
-               torture_comment(torture_ctx, __location__": Expression `%s' failed\n", __STRING(expr)); \
-               _torture_fail_ext(torture_ctx, __location__": %s", cmt); \
+               torture_result(torture_ctx, TORTURE_FAIL, __location__": Expression `%s' failed: %s", __STRING(expr), cmt); \
                return false; \
        }
 
 #define torture_assert_werr_equal(torture_ctx, got, expected, cmt) \
        do { WERROR __got = got, __expected = expected; \
        if (!W_ERROR_EQUAL(__got, __expected)) { \
-               torture_comment(torture_ctx, __location__": "#got" was %s, expected %s\n", \
-                                               win_errstr(__got), win_errstr(__expected)); \
-               _torture_fail_ext(torture_ctx, __location__": %s", cmt); \
+               torture_result(torture_ctx, TORTURE_FAIL, __location__": "#got" was %s, expected %s: %s", win_errstr(__got), win_errstr(__expected), cmt); \
                return false; \
        } \
        } while (0)
@@ -205,9 +208,7 @@ void _torture_skip_ext(struct torture_context *test, const char *reason, ...) PR
 #define torture_assert_ntstatus_equal(torture_ctx,got,expected,cmt) \
        do { NTSTATUS __got = got, __expected = expected; \
        if (!NT_STATUS_EQUAL(__got, __expected)) { \
-               torture_comment(torture_ctx, __location__": "#got" was %s, expected %s\n", \
-                                               nt_errstr(__got), nt_errstr(__expected)); \
-               _torture_fail_ext(torture_ctx, __location__": %s", cmt); \
+               torture_result(torture_ctx, TORTURE_FAIL, __location__": "#got" was %s, expected %s: %s", nt_errstr(__got), nt_errstr(__expected), cmt); \
                return false; \
        }\
        } while(0)
@@ -216,8 +217,7 @@ void _torture_skip_ext(struct torture_context *test, const char *reason, ...) PR
 #define torture_assert_casestr_equal(torture_ctx,got,expected,cmt) \
        do { const char *__got = (got), *__expected = (expected); \
        if (!strequal(__got, __expected)) { \
-               torture_comment(torture_ctx, __location__": "#got" was %s, expected %s\n", __got, __expected); \
-               _torture_fail_ext(torture_ctx, __location__": %s", cmt); \
+               torture_result(torture_ctx, TORTURE_FAIL, __location__": "#got" was %s, expected %s: %s", __got, __expected, cmt); \
                return false; \
        } \
        } while(0)
@@ -225,8 +225,9 @@ void _torture_skip_ext(struct torture_context *test, const char *reason, ...) PR
 #define torture_assert_str_equal(torture_ctx,got,expected,cmt)\
        do { const char *__got = (got), *__expected = (expected); \
        if (strcmp_safe(__got, __expected) != 0) { \
-               torture_comment(torture_ctx, __location__": "#got" was %s, expected %s\n", __got, __expected); \
-               _torture_fail_ext(torture_ctx, __location__": %s", cmt); \
+               torture_result(torture_ctx, TORTURE_FAIL, \
+                                          __location__": "#got" was %s, expected %s: %s", \
+                                          __got, __expected, cmt); \
                return false; \
        } \
        } while(0)
@@ -234,8 +235,9 @@ void _torture_skip_ext(struct torture_context *test, const char *reason, ...) PR
 #define torture_assert_int_equal(torture_ctx,got,expected,cmt)\
        do { int __got = (got), __expected = (expected); \
        if (__got != __expected) { \
-               torture_comment(torture_ctx, __location__": "#got" was %d, expected %d\n", __got, __expected); \
-               _torture_fail_ext(torture_ctx, __location__": %s", cmt); \
+               torture_result(torture_ctx, TORTURE_FAIL, \
+                                        __location__": "#got" was %d, expected %d: %s", \
+                                          __got, __expected, cmt); \
                return false; \
        } \
        } while(0)
@@ -243,8 +245,10 @@ void _torture_skip_ext(struct torture_context *test, const char *reason, ...) PR
 #define torture_assert_errno_equal(torture_ctx,expected,cmt)\
        do { int __expected = (expected); \
        if (errno != __expected) { \
-               torture_comment(torture_ctx, __location__": errno was %d, expected %s\n", errno, strerror(__expected)); \
-               _torture_fail_ext(torture_ctx, __location__": %s", cmt); \
+               torture_result(torture_ctx, TORTURE_FAIL, \
+                       __location__": errno was %d (%s), expected %d: %s: %s", \
+                                          errno, strerror(errno), __expected, \
+                                          strerror(__expected), cmt); \
                return false; \
        } \
        } while(0)
@@ -252,11 +256,11 @@ void _torture_skip_ext(struct torture_context *test, const char *reason, ...) PR
 
 
 #define torture_skip(torture_ctx,cmt) do {\
-               _torture_skip_ext(torture_ctx, __location__": %s", cmt);\
+               torture_result(torture_ctx, TORTURE_SKIP, __location__": %s", cmt);\
                return true; \
        } while(0)
 #define torture_fail(torture_ctx,cmt) do {\
-               _torture_fail_ext(torture_ctx, __location__": %s", cmt);\
+               torture_result(torture_ctx, TORTURE_FAIL, __location__": %s", cmt);\
                return false; \
        } while (0)
 
@@ -282,7 +286,8 @@ bool torture_setting_bool(struct torture_context *test,
                                                  const char *name, 
                                                  bool default_value);
 
-/* Helper function commonly used */
-bool torture_teardown_free(struct torture_context *torture, void *data);
+struct torture_suite *torture_find_suite(struct torture_suite *parent, 
+                                                                                const char *name);
+
 
 #endif /* __TORTURE_UI_H__ */