summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/torture/smbtorture.c10
-rw-r--r--source4/torture/torture.c2
-rw-r--r--source4/torture/ui.c4
-rw-r--r--source4/torture/ui.h2
4 files changed, 12 insertions, 6 deletions
diff --git a/source4/torture/smbtorture.c b/source4/torture/smbtorture.c
index fdd44ddc08..ce05989327 100644
--- a/source4/torture/smbtorture.c
+++ b/source4/torture/smbtorture.c
@@ -517,8 +517,10 @@ const static struct torture_ui_ops quiet_ui_ops = {
if (strcmp(target, "samba3") == 0) {
lp_set_cmdline("target:samba3", "true");
+ lp_set_cmdline("torture:knownfail", "samba3-knownfail");
} else if (strcmp(target, "samba4") == 0) {
lp_set_cmdline("target:samba4", "true");
+ lp_set_cmdline("torture:knownfail", "samba4-knownfail");
}
if (max_runtime) {
@@ -594,8 +596,8 @@ const static struct torture_ui_ops quiet_ui_ops = {
exit(1);
}
- torture = torture_context_init(talloc_autofree_context(), "KNOWN_FAILURES",
- ui_ops);
+ torture = torture_context_init(talloc_autofree_context(),
+ lp_parm_string(-1, "torture", "knownfail"), ui_ops);
if (argc_new == 0) {
printf("You must specify a test to run, or 'ALL'\n");
@@ -651,9 +653,7 @@ const static struct torture_ui_ops quiet_ui_ops = {
}
}
- talloc_free(torture);
-
- if (correct) {
+ if (torture->results.returncode) {
return(0);
} else {
return(1);
diff --git a/source4/torture/torture.c b/source4/torture/torture.c
index e6629eb214..76c589fcfb 100644
--- a/source4/torture/torture.c
+++ b/source4/torture/torture.c
@@ -54,6 +54,8 @@ struct torture_context *torture_context_init(TALLOC_CTX *mem_ctx,
torture);
torture->ui_ops = ui_ops;
+ torture->results.returncode = true;
+
return torture;
}
diff --git a/source4/torture/ui.c b/source4/torture/ui.c
index 1e404d55ad..441e9ebbd7 100644
--- a/source4/torture/ui.c
+++ b/source4/torture/ui.c
@@ -142,7 +142,7 @@ BOOL torture_run_suite(struct torture_context *context,
context->active_testname = talloc_strdup(context, suite->name);
if (suite->path)
- torture_subunit_run_suite(context, suite);
+ ret &= torture_subunit_run_suite(context, suite);
for (tcase = suite->testcases; tcase; tcase = tcase->next) {
ret &= torture_run_tcase(context, tcase);
@@ -206,12 +206,14 @@ void torture_ui_test_result(struct torture_context *context,
context->results.unexpected_errors,
talloc_reference(context, context->active_testname));
context->results.errors++;
+ context->results.returncode = false;
} else if (result == TORTURE_FAIL) {
if (0 == str_list_match(context->active_testname,
context->expected_failures)) {
context->results.unexpected_failures = str_list_add(
context->results.unexpected_failures,
talloc_reference(context, context->active_testname));
+ context->results.returncode = false;
}
context->results.failed++;
}
diff --git a/source4/torture/ui.h b/source4/torture/ui.h
index 23988d9bf4..5547ecf317 100644
--- a/source4/torture/ui.h
+++ b/source4/torture/ui.h
@@ -91,6 +91,8 @@ struct torture_context
const char **unexpected_failures;
const char **unexpected_successes;
const char **unexpected_errors;
+
+ bool returncode;
} results;
bool quiet; /* Whether tests should avoid writing output to stdout */