1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 11:50:28 +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:
Ludovic Courtès 2012-11-01 00:42:37 +01:00
parent 10744b7c50
commit d4eee584e0
2 changed files with 21 additions and 2 deletions

View file

@ -3,7 +3,9 @@
((nil . ((fill-column . 72) ((nil . ((fill-column . 72)
(tab-width . 8))) (tab-width . 8)))
(c-mode . ((c-file-style . "gnu"))) (c-mode . ((c-file-style . "gnu")))
(scheme-mode . ((indent-tabs-mode . nil))) (scheme-mode
. ((indent-tabs-mode . nil)
(eval . (put 'pass-if-equal 'scheme-indent-function 2))))
(emacs-lisp-mode . ((indent-tabs-mode . nil))) (emacs-lisp-mode . ((indent-tabs-mode . nil)))
(texinfo-mode . ((indent-tabs-mode . nil) (texinfo-mode . ((indent-tabs-mode . nil)
(fill-column . 72)))) (fill-column . 72))))

View file

@ -44,6 +44,7 @@
;; Reporting passes and failures. ;; Reporting passes and failures.
run-test run-test
pass-if expect-fail pass-if expect-fail
pass-if-equal
pass-if-exception expect-fail-exception pass-if-exception expect-fail-exception
;; Naming groups of tests in a regular fashion. ;; Naming groups of tests in a regular fashion.
@ -332,7 +333,11 @@
((pass) ((pass)
(report (if expect-pass 'pass 'upass) test-name)) (report (if expect-pass 'pass 'upass) test-name))
((fail) ((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) ((unresolved untested unsupported)
(report key test-name)) (report key test-name))
((quit) ((quit)
@ -352,6 +357,18 @@
((_ name rest ...) ((_ name rest ...)
(run-test name #t (lambda () 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. ;;; A short form for tests that are expected to fail, taken from Greg.
(define-syntax expect-fail (define-syntax expect-fail
(syntax-rules () (syntax-rules ()