smbtorture: Use subunit C library.
[gd/samba-autobuild/.git] / lib / torture / subunit.c
index 6c58cfef763188ebcf721f2f7eada4bbef54b052..0b63cca0536ac1bf1af8cec593d43cb5077bd14a 100644 (file)
 
 #include "includes.h"
 #include "lib/torture/torture.h"
+#include <subunit/child.h>
 
-static void subunit_suite_start(struct torture_context *ctx,
+static void torture_subunit_suite_start(struct torture_context *ctx,
                                struct torture_suite *suite)
 {
 }
 
-static void subunit_print_testname(struct torture_context *ctx, 
+static char *torture_subunit_test_name(struct torture_context *ctx,
                                   struct torture_tcase *tcase,
                                   struct torture_test *test)
 {
        if (!strcmp(tcase->name, test->name)) {
-               printf("%s", test->name);
+               return talloc_strdup(ctx, test->name);
        } else {
-               printf("%s.%s", tcase->name, test->name);
+               return talloc_asprintf(ctx, "%s.%s", tcase->name, test->name);
        }
 }
 
-static void subunit_test_start(struct torture_context *ctx, 
+static void torture_subunit_test_start(struct torture_context *ctx, 
                               struct torture_tcase *tcase,
                               struct torture_test *test)
 {
-       printf("test: ");
-       subunit_print_testname(ctx, tcase, test);
-       printf("\n");
+       char *fullname = torture_subunit_test_name(ctx, ctx->active_tcase, ctx->active_test);
+       subunit_test_start(fullname);
+       talloc_free(fullname);
 }
 
-static void subunit_test_result(struct torture_context *context, 
+static void torture_subunit_test_result(struct torture_context *context, 
                                enum torture_result res, const char *reason)
 {
+       char *fullname = torture_subunit_test_name(context, context->active_tcase, context->active_test);
        switch (res) {
        case TORTURE_OK:
-               printf("success: ");
+               subunit_test_pass(fullname);
                break;
        case TORTURE_FAIL:
-               printf("failure: ");
+               subunit_test_fail(fullname, reason);
                break;
        case TORTURE_ERROR:
-               printf("error: ");
+               subunit_test_error(fullname, reason);
                break;
        case TORTURE_SKIP:
-               printf("skip: ");
+               subunit_test_skip(fullname, reason);
                break;
        }
-       subunit_print_testname(context, context->active_tcase, context->active_test);
-
-       if (reason)
-               printf(" [\n%s\n]", reason);
-       printf("\n");
+       talloc_free(fullname);
 }
 
-static void subunit_comment(struct torture_context *test,
+static void torture_subunit_comment(struct torture_context *test,
                            const char *comment)
 {
        fprintf(stderr, "%s", comment);
 }
 
-static void subunit_warning(struct torture_context *test,
+static void torture_subunit_warning(struct torture_context *test,
                            const char *comment)
 {
        fprintf(stderr, "WARNING!: %s\n", comment);
 }
 
-static void subunit_progress(struct torture_context *tctx, int offset, enum torture_progress_whence whence)
+static void torture_subunit_progress(struct torture_context *tctx, int offset, enum torture_progress_whence whence)
 {
        switch (whence) {
        case TORTURE_PROGRESS_SET:
@@ -103,10 +101,10 @@ static void subunit_progress(struct torture_context *tctx, int offset, enum tort
 }
 
 const struct torture_ui_ops torture_subunit_ui_ops = {
-       .comment = subunit_comment,
-       .warning = subunit_warning,
-       .test_start = subunit_test_start,
-       .test_result = subunit_test_result,
-       .suite_start = subunit_suite_start,
-       .progress = subunit_progress,
+       .comment = torture_subunit_comment,
+       .warning = torture_subunit_warning,
+       .test_start = torture_subunit_test_start,
+       .test_result = torture_subunit_test_result,
+       .suite_start = torture_subunit_suite_start,
+       .progress = torture_subunit_progress,
 };