summaryrefslogtreecommitdiff
path: root/source4/torture/smbtorture.c
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2006-10-16 20:05:19 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:21:13 -0500
commit52e3f69a36b6ba6a589a8f768fbee77ee06b281c (patch)
tree4f77d34f1c12b2fb77f672ed2d989f7ad88d7ca6 /source4/torture/smbtorture.c
parent3478bf1c238eaa82d9383f18dcb7d802aed06cd0 (diff)
downloadsamba-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/smbtorture.c')
-rw-r--r--source4/torture/smbtorture.c27
1 files changed, 21 insertions, 6 deletions
diff --git a/source4/torture/smbtorture.c b/source4/torture/smbtorture.c
index 4c2cfa5524..3d7a75f8cf 100644
--- a/source4/torture/smbtorture.c
+++ b/source4/torture/smbtorture.c
@@ -27,6 +27,7 @@
#include "libcli/libcli.h"
#include "lib/ldb/include/ldb.h"
#include "lib/events/events.h"
+#include "dynconfig.h"
#include "torture/torture.h"
#include "build.h"
@@ -326,25 +327,27 @@ static void subunit_test_result (struct torture_context *context,
{
switch (res) {
case TORTURE_OK:
- printf("success: %s\n", context->active_test->name);
+ printf("success: %s", context->active_test->name);
break;
case TORTURE_FAIL:
- printf("failure: %s [ %s ]\n", context->active_test->name, reason);
+ printf("failure: %s", context->active_test->name);
break;
case TORTURE_TODO:
- printf("todo: %s\n", context->active_test->name);
+ printf("todo: %s", context->active_test->name);
break;
case TORTURE_SKIP:
- printf("skip: %s\n", context->active_test->name);
+ printf("skip: %s", context->active_test->name);
break;
}
+ if (reason)
+ printf(" [ %s ]", reason);
+ printf("\n");
}
static void subunit_comment (struct torture_context *test,
const char *comment)
{
- /* FIXME Add # sign before each line */
- printf("%s", comment);
+ fprintf(stderr, "%s", comment);
}
const static struct torture_ui_ops subunit_ui_ops = {
@@ -438,6 +441,7 @@ const static struct torture_ui_ops quiet_ui_ops = {
char **argv_new;
poptContext pc;
static const char *target = "other";
+ const char **subunit_dir;
static const char *ui_ops_name = "simple";
enum {OPT_LOADFILE=1000,OPT_UNCLIST,OPT_TIMELIMIT,OPT_DNS,
OPT_DANGEROUS,OPT_SMB_PORTS,OPT_ASYNC};
@@ -525,6 +529,17 @@ const static struct torture_ui_ops quiet_ui_ops = {
}
torture_init();
+
+ subunit_dir = lp_parm_string_list(-1, "torture", "subunitdir", ":");
+ if (subunit_dir == NULL)
+ torture_subunit_load_testsuites(dyn_TORTUREDIR);
+ else {
+ for (i = 0; subunit_dir[i]; i++)
+ torture_subunit_load_testsuites(subunit_dir[i]);
+ }
+
+
+
ldb_global_init();
if (torture_seed == 0) {