1/*
2   Unix SMB/CIFS implementation.
3   Samba utility functions
4   Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2008
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 3 of the License, or
9   (at your option) any later version.
10
11   This program is distributed in the hope that it will be useful,
12   but WITHOUT ANY WARRANTY; without even the implied warranty of
13   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   GNU General Public License for more details.
15
16   You should have received a copy of the GNU General Public License
17   along with this program.  If not, see <http://www.gnu.org/licenses/>.
18*/
19
20#include "includes.h"
21#include "lib/torture/torture.h"
22
23static void subunit_suite_start(struct torture_context *ctx,
24				struct torture_suite *suite)
25{
26}
27
28static void subunit_print_testname(struct torture_context *ctx,
29				   struct torture_tcase *tcase,
30				   struct torture_test *test)
31{
32	if (!strcmp(tcase->name, test->name)) {
33		printf("%s", test->name);
34	} else {
35		printf("%s.%s", tcase->name, test->name);
36	}
37}
38
39static void subunit_test_start(struct torture_context *ctx,
40			       struct torture_tcase *tcase,
41			       struct torture_test *test)
42{
43	printf("test: ");
44	subunit_print_testname(ctx, tcase, test);
45	printf("\n");
46}
47
48static void subunit_test_result(struct torture_context *context,
49				enum torture_result res, const char *reason)
50{
51	switch (res) {
52	case TORTURE_OK:
53		printf("success: ");
54		break;
55	case TORTURE_FAIL:
56		printf("failure: ");
57		break;
58	case TORTURE_ERROR:
59		printf("error: ");
60		break;
61	case TORTURE_SKIP:
62		printf("skip: ");
63		break;
64	}
65	subunit_print_testname(context, context->active_tcase, context->active_test);
66
67	if (reason)
68		printf(" [\n%s\n]", reason);
69	printf("\n");
70}
71
72static void subunit_comment(struct torture_context *test,
73			    const char *comment)
74{
75	fprintf(stderr, "%s", comment);
76}
77
78static void subunit_warning(struct torture_context *test,
79			    const char *comment)
80{
81	fprintf(stderr, "WARNING!: %s\n", comment);
82}
83
84const struct torture_ui_ops torture_subunit_ui_ops = {
85	.comment = subunit_comment,
86	.warning = subunit_warning,
87	.test_start = subunit_test_start,
88	.test_result = subunit_test_result,
89	.suite_start = subunit_suite_start
90};
91