summaryrefslogtreecommitdiff
path: root/source4/torture/smbtorture.c
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2006-10-17 22:06:43 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:21:22 -0500
commit4517b7af0e867d7244d8fcb9af72358f3559660f (patch)
tree957f32d0005462ac6d6438e113c31c665de36333 /source4/torture/smbtorture.c
parentc7090e666981eba30eb0553486bf782142e65a89 (diff)
downloadsamba-4517b7af0e867d7244d8fcb9af72358f3559660f.tar.gz
samba-4517b7af0e867d7244d8fcb9af72358f3559660f.tar.bz2
samba-4517b7af0e867d7244d8fcb9af72358f3559660f.zip
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)
Diffstat (limited to 'source4/torture/smbtorture.c')
-rw-r--r--source4/torture/smbtorture.c58
1 files changed, 46 insertions, 12 deletions
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;i<argc_new;i++) {
if (!run_test(torture, argv_new[i])) {
correct = false;
}
}
- total = torture->skipped+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");
}
}