r19387: Exit with 0 if failures were expected
authorJelmer Vernooij <jelmer@samba.org>
Wed, 18 Oct 2006 10:03:30 +0000 (10:03 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:21:23 +0000 (14:21 -0500)
(This used to be commit b4fc06aeafa3ed8460759409a72b4de43a534d62)

source4/torture/smbtorture.c
source4/torture/torture.c
source4/torture/ui.c
source4/torture/ui.h

index fdd44ddc0818cfc00685d589c44805f614e48657..ce059893278f44ad1dcbd7ee17a34851351c8073 100644 (file)
@@ -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);
index e6629eb214bf3b6cf80d2c6045df6e6430a38179..76c589fcfb34990426babcee22978857c52a9ee6 100644 (file)
@@ -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;
 }
 
index 1e404d55ada07c344989a311e7ecfb9643d15dce..441e9ebbd7bed9e1099b98a1ba3f1bf7ca0639fb 100644 (file)
@@ -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++;
        }
index 23988d9bf43015cbe02f7ed15dc32840eff677f4..5547ecf3179b8949cef70b084d5439e96aaf1331 100644 (file)
@@ -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 */