summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/torture/torture.c22
-rw-r--r--lib/torture/torture.h10
2 files changed, 20 insertions, 12 deletions
diff --git a/lib/torture/torture.c b/lib/torture/torture.c
index b8fb28f669f..41226ef7504 100644
--- a/lib/torture/torture.c
+++ b/lib/torture/torture.c
@@ -212,18 +212,22 @@ void torture_warning(struct torture_context *context, const char *comment, ...)
void torture_result(struct torture_context *context,
enum torture_result result, const char *fmt, ...)
{
- va_list ap;
+ /* Of the two outcomes, keep that with the higher priority. */
+ if (result >= context->last_result) {
+ va_list ap;
- va_start(ap, fmt);
+ va_start(ap, fmt);
- if (context->last_reason) {
- torture_warning(context, "%s", context->last_reason);
- talloc_free(context->last_reason);
- }
+ if (context->last_reason) {
+ torture_warning(context, "%s", context->last_reason);
+ talloc_free(context->last_reason);
+ }
- context->last_result = result;
- context->last_reason = talloc_vasprintf(context, fmt, ap);
- va_end(ap);
+ context->last_result = result;
+ context->last_reason = talloc_vasprintf(context, fmt, ap);
+
+ va_end(ap);
+ }
}
/**
diff --git a/lib/torture/torture.h b/lib/torture/torture.h
index f6089684afd..6818084ea96 100644
--- a/lib/torture/torture.h
+++ b/lib/torture/torture.h
@@ -27,11 +27,15 @@ struct torture_suite;
struct torture_tcase;
struct torture_results;
+/*
+ * Arranged in precedence order. TORTURE_ERROR has the highest priority;
+ * TORTURE_OK the lowest.
+ */
enum torture_result {
TORTURE_OK=0,
- TORTURE_FAIL=1,
- TORTURE_ERROR=2,
- TORTURE_SKIP=3
+ TORTURE_SKIP=1,
+ TORTURE_FAIL=2,
+ TORTURE_ERROR=3
};
enum torture_progress_whence {