mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-19 18:20:22 +02:00
test-suite: Add `pass-if-equal'.
* test-suite/test-suite/lib.scm (pass-if-equal): New macro. (run-test): Upon `fail', pass ARGS to REPORT.
This commit is contained in:
parent
10744b7c50
commit
d4eee584e0
2 changed files with 21 additions and 2 deletions
|
@ -44,6 +44,7 @@
|
|||
;; Reporting passes and failures.
|
||||
run-test
|
||||
pass-if expect-fail
|
||||
pass-if-equal
|
||||
pass-if-exception expect-fail-exception
|
||||
|
||||
;; Naming groups of tests in a regular fashion.
|
||||
|
@ -332,7 +333,11 @@
|
|||
((pass)
|
||||
(report (if expect-pass 'pass 'upass) test-name))
|
||||
((fail)
|
||||
(report (if expect-pass 'fail 'xfail) test-name))
|
||||
;; ARGS may contain extra info about the failure,
|
||||
;; such as the expected and actual value.
|
||||
(apply report (if expect-pass 'fail 'xfail)
|
||||
test-name
|
||||
args))
|
||||
((unresolved untested unsupported)
|
||||
(report key test-name))
|
||||
((quit)
|
||||
|
@ -352,6 +357,18 @@
|
|||
((_ name rest ...)
|
||||
(run-test name #t (lambda () rest ...)))))
|
||||
|
||||
(define-syntax pass-if-equal
|
||||
(syntax-rules ()
|
||||
"Succeed if and only if BODY's return value is equal? to EXPECTED."
|
||||
((_ name expected body ...)
|
||||
(run-test 'name #t
|
||||
(lambda ()
|
||||
(let ((result (begin body ...)))
|
||||
(or (equal? expected result)
|
||||
(throw 'fail
|
||||
'expected-value expected
|
||||
'actual-value result))))))))
|
||||
|
||||
;;; A short form for tests that are expected to fail, taken from Greg.
|
||||
(define-syntax expect-fail
|
||||
(syntax-rules ()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue