From ed88d03383c743378370fa2922b15aae11ab6e1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Le=20Barbier?= Date: Mon, 1 Jul 2024 11:30:37 +0200 Subject: [PATCH] Ensure that an instrumented assertion returns its value --- src/testcase.lisp | 9 ++++++--- testsuite/package.lisp | 1 + testsuite/testcase.lisp | 15 +++++++++++++++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/testcase.lisp b/src/testcase.lisp index 998cbc6..611093c 100644 --- a/src/testcase.lisp +++ b/src/testcase.lisp @@ -387,10 +387,13 @@ instead of returning normally.")) (return-from evaluate-assertion-lambda))) (cond ((not success-p) - (signal-failure description)) + (signal-failure description) + (return-from instrument-assertion-1 + (values nil description))) (t - (signal-success))) - (values nil)))) + (signal-success) + (return-from instrument-assertion-1 + t)))))) (evaluate-argument-lambda (argument-lambda) (handler-case (values nil (funcall argument-lambda)) (t (unexpected-condition) diff --git a/testsuite/package.lisp b/testsuite/package.lisp index f397a0d..9156715 100644 --- a/testsuite/package.lisp +++ b/testsuite/package.lisp @@ -21,6 +21,7 @@ #:a-simple-failure #:a-successful-testsuite #:a-successful-testsuite-with-function-calls + #:ensure-that-an-instrumented-assertion-returns-its-value #:ensure-that-define-testcase-recognises-sharpsign-single-quote-in-function-names #:ensure-that-testcase-is-reported-when-wrapped-in-flet #:interactive-assertion-count diff --git a/testsuite/testcase.lisp b/testsuite/testcase.lisp index 27dca8e..64f2ee0 100644 --- a/testsuite/testcase.lisp +++ b/testsuite/testcase.lisp @@ -35,6 +35,12 @@ (define-testcase a-successful-testsuite () (assert-t t)) +(define-testcase a-testsuite-conditioned-by-assertions () + (when (assert-t t) + (assert-t t)) + (when (assert-t nil) + (assert-t t))) + (define-testcase a-failing-argument-testsuite () (assert-t t) (assert-eq 0 0) @@ -109,11 +115,20 @@ (assert-eq 10 (confidence:testcase-failure testcase-outcome)) (assert-eq 1 (confidence:testcase-condition testcase-outcome)))) +(define-testcase ensure-that-an-instrumented-assertion-returns-its-value () + (with-testcase-outcome testcase-outcome + (a-testsuite-conditioned-by-assertions) + (assert-type testcase-outcome 'confidence:testcase-outcome) + (assert-eq 3 (confidence:testcase-total testcase-outcome)) + (assert-eq 2 (confidence:testcase-success testcase-outcome)) + (assert-eq 1 (confidence:testcase-failure testcase-outcome)))) + (define-testcase testsuite-testcase () (validate-define-testcase) (ensure-that-define-testcase-recognises-sharpsign-single-quote-in-function-names) (ensure-that-testcase-is-reported-when-wrapped-in-flet) (ensure-that-define-testcase-handles-dotted-lists) + (ensure-that-an-instrumented-assertion-returns-its-value) (validate-supervise-assertion)) ;;;; End of file `testcase.lisp'