Commit programmatic API to construct test suites and test cases, in response to popular demand.
The API is make-test-case and make-test-suite. Use should be obvious. TODO: - Document - Port to Schematics/Planet release svn: r14731
This commit is contained in:
parent
5fccc68e53
commit
6c68825a49
|
@ -35,6 +35,35 @@
|
||||||
(check-exn exn:fail:contract?
|
(check-exn exn:fail:contract?
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(test-suite (check = 1 1)))))
|
(test-suite (check = 1 1)))))
|
||||||
|
|
||||||
|
(test-case
|
||||||
|
"make-test-suite"
|
||||||
|
(let* ([before? #f]
|
||||||
|
[after? #f]
|
||||||
|
[ran? #f]
|
||||||
|
[results
|
||||||
|
(run-test
|
||||||
|
(make-test-suite
|
||||||
|
"dummy1"
|
||||||
|
(list
|
||||||
|
(make-test-case
|
||||||
|
"dummy-test-1"
|
||||||
|
(lambda () (check-true #t)))
|
||||||
|
(make-test-suite
|
||||||
|
"dummy2"
|
||||||
|
#:before (lambda () (set! before? #t))
|
||||||
|
#:after (lambda () (set! after? #t))
|
||||||
|
(list
|
||||||
|
(make-test-case
|
||||||
|
"dummy-test-2"
|
||||||
|
(lambda ()
|
||||||
|
(set! ran? #t)
|
||||||
|
(check-true #t))))))))])
|
||||||
|
(check-equal? (length results) 2)
|
||||||
|
(map (lambda (r) (check-pred test-success? r)) results)
|
||||||
|
(check-true before?)
|
||||||
|
(check-true after?)
|
||||||
|
(check-true ran?)))
|
||||||
))
|
))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
test-suite-test-case-around
|
test-suite-test-case-around
|
||||||
test-suite-check-around
|
test-suite-check-around
|
||||||
delay-test
|
delay-test
|
||||||
|
make-test-suite
|
||||||
|
|
||||||
apply-test-suite
|
apply-test-suite
|
||||||
|
|
||||||
|
@ -124,6 +125,38 @@
|
||||||
#:after void-thunk
|
#:after void-thunk
|
||||||
test ...))]))
|
test ...))]))
|
||||||
|
|
||||||
|
(define (tests->test-suite-action tests)
|
||||||
|
(lambda (fdown fup fhere seed)
|
||||||
|
(parameterize
|
||||||
|
([current-seed seed])
|
||||||
|
(for-each
|
||||||
|
(lambda (t)
|
||||||
|
(cond
|
||||||
|
[(schemeunit-test-suite? t)
|
||||||
|
(current-seed (apply-test-suite t fdown fup fhere (current-seed)))]
|
||||||
|
[(schemeunit-test-case? t)
|
||||||
|
(current-seed
|
||||||
|
(fhere t
|
||||||
|
(schemeunit-test-case-name t)
|
||||||
|
(schemeunit-test-case-action t)
|
||||||
|
(current-seed)))]
|
||||||
|
[else
|
||||||
|
(raise
|
||||||
|
(make-exn:test
|
||||||
|
(format "tests->test-suite-action received ~a in list of tests ~a, which is not a test." t tests)
|
||||||
|
(current-continuation-marks)))]))
|
||||||
|
tests)
|
||||||
|
(current-seed))))
|
||||||
|
|
||||||
|
;; make-test-suite : string [#:before thunk] [#:after thunk] (listof test?) -> test-suite?
|
||||||
|
;;
|
||||||
|
;; Construct a test suite from a list of tests
|
||||||
|
(define (make-test-suite name #:before [before void-thunk] #:after [after void-thunk] tests)
|
||||||
|
(make-schemeunit-test-suite name
|
||||||
|
(tests->test-suite-action tests)
|
||||||
|
before
|
||||||
|
after))
|
||||||
|
|
||||||
;;
|
;;
|
||||||
;; Shortcut helpers
|
;; Shortcut helpers
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -281,5 +281,13 @@
|
||||||
check-info?
|
check-info?
|
||||||
check-info-name
|
check-info-name
|
||||||
check-info-value)
|
check-info-value)
|
||||||
|
|
||||||
|
(test-case
|
||||||
|
"make-test-case constructs a test case"
|
||||||
|
(check-pred
|
||||||
|
test-success?
|
||||||
|
(car
|
||||||
|
(run-test
|
||||||
|
(make-test-case "dummy" (lambda () (check-true #t)))))))
|
||||||
))
|
))
|
||||||
|
|
|
@ -41,8 +41,10 @@
|
||||||
test-begin
|
test-begin
|
||||||
test-case
|
test-case
|
||||||
test-suite
|
test-suite
|
||||||
|
make-test-suite
|
||||||
delay-test
|
delay-test
|
||||||
(rename-out [schemeunit-test-case? test-case?]
|
(rename-out [make-schemeunit-test-case make-test-case]
|
||||||
|
[schemeunit-test-case? test-case?]
|
||||||
[schemeunit-test-suite? test-suite?])
|
[schemeunit-test-suite? test-suite?])
|
||||||
|
|
||||||
define-test-suite
|
define-test-suite
|
||||||
|
|
Loading…
Reference in New Issue
Block a user