From 4517b7af0e867d7244d8fcb9af72358f3559660f Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 17 Oct 2006 22:06:43 +0000 Subject: r19381: Print out the specific tests that failed after a smbtorture run. Support listing known failures as a list of wildcards in the file `KNOWN_FAILURES'. (This used to be commit 23f66efd564d1ad549fc0cd60348f54808f5cafa) --- source4/torture/smbtorture.c | 58 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 46 insertions(+), 12 deletions(-) (limited to 'source4/torture/smbtorture.c') diff --git a/source4/torture/smbtorture.c b/source4/torture/smbtorture.c index 5740829d7d..fdd44ddc08 100644 --- a/source4/torture/smbtorture.c +++ b/source4/torture/smbtorture.c @@ -53,8 +53,7 @@ static bool run_matching(struct torture_context *torture, continue; } - ret &= run_matching(torture, - o->name, expr, o, matched); + ret &= run_matching(torture, o->name, expr, o, matched); } } else { char *name; @@ -435,6 +434,7 @@ const static struct torture_ui_ops quiet_ui_ops = { int max_runtime=0; int argc_new; struct torture_context *torture; + const struct torture_ui_ops *ui_ops; char **argv_new; poptContext pc; static const char *target = "other"; @@ -581,39 +581,73 @@ const static struct torture_ui_ops quiet_ui_ops = { lp_set_cmdline("torture:binding", binding); } - torture = talloc_zero(talloc_autofree_context(), struct torture_context); if (!strcmp(ui_ops_name, "simple")) { - torture->ui_ops = &std_ui_ops; + ui_ops = &std_ui_ops; } else if (!strcmp(ui_ops_name, "subunit")) { - torture->ui_ops = &subunit_ui_ops; + ui_ops = &subunit_ui_ops; } else if (!strcmp(ui_ops_name, "harness")) { - torture->ui_ops = &harness_ui_ops; + ui_ops = &harness_ui_ops; } else if (!strcmp(ui_ops_name, "quiet")) { - torture->ui_ops = &quiet_ui_ops; + ui_ops = &quiet_ui_ops; } else { printf("Unknown output format '%s'\n", ui_ops_name); exit(1); } + torture = torture_context_init(talloc_autofree_context(), "KNOWN_FAILURES", + ui_ops); + if (argc_new == 0) { printf("You must specify a test to run, or 'ALL'\n"); } else { int total; double rate; + int unexpected_failures; for (i=2;iskipped+torture->success+torture->failed; + + unexpected_failures = str_list_length(torture->results.unexpected_failures); + + total = torture->results.skipped+torture->results.success+torture->results.failed+torture->results.errors; if (total == 0) { printf("No tests run.\n"); } else { - rate = ((total - torture->failed) * (100.0 / total)); - printf("Tests: %d, Errors: %d, Skipped: %d. Success rate: %.2f%%\n", - total, torture->failed, torture->skipped, - rate); + rate = ((total - unexpected_failures - torture->results.errors) * (100.0 / total)); + + printf("Tests: %d, Failures: %d", total, torture->results.failed); + if (torture->results.failed - unexpected_failures) { + printf(" (%d expected)", torture->results.failed - unexpected_failures); + } + printf(", Errors: %d, Skipped: %d. Success rate: %.2f%%\n", + torture->results.errors, torture->results.skipped, rate); + } + + if (unexpected_failures) { + printf("The following tests failed:\n"); + for (i = 0; torture->results.unexpected_failures[i]; i++) { + printf(" %s\n", torture->results.unexpected_failures[i]); + } + printf("\n"); + } + + if (str_list_length(torture->results.unexpected_errors)) { + printf("Errors occurred while running the following tests:\n"); + for (i = 0; torture->results.unexpected_errors[i]; i++) { + printf(" %s\n", torture->results.unexpected_errors[i]); + } + printf("\n"); + } + + if (str_list_length(torture->results.unexpected_successes)) { + printf("The following tests were expected to fail but succeeded:\n"); + for (i = 0; torture->results.unexpected_successes[i]; i++) { + printf(" %s\n", torture->results.unexpected_successes[i]); + } + printf("\n"); } } -- cgit