diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/torture/torture.c | 22 | ||||
-rw-r--r-- | lib/torture/torture.h | 10 |
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 { |