more new contract test suite cleanups
This commit is contained in:
parent
c910252fdf
commit
402ddcbf1e
|
@ -50,7 +50,6 @@
|
||||||
'no-exn-raised))
|
'no-exn-raised))
|
||||||
(unless (predicate? exn)
|
(unless (predicate? exn)
|
||||||
(set! failures (+ failures 1))
|
(set! failures (+ failures 1))
|
||||||
(printf "~s\n" (list name thunk sexp predicate?))
|
|
||||||
(eprintf "FAILED ~s\n" name)))
|
(eprintf "FAILED ~s\n" name)))
|
||||||
|
|
||||||
(define current-contract-namespace (make-parameter 'current-contract-namespace-not-initialized))
|
(define current-contract-namespace (make-parameter 'current-contract-namespace-not-initialized))
|
||||||
|
@ -251,40 +250,34 @@
|
||||||
;; blame : (or/c 'pos 'neg string?)
|
;; blame : (or/c 'pos 'neg string?)
|
||||||
;; if blame is a string, expect to find the string (format "blaming: ~a" blame) in the exn message
|
;; if blame is a string, expect to find the string (format "blaming: ~a" blame) in the exn message
|
||||||
(define (test/spec-failed name expression blame)
|
(define (test/spec-failed name expression blame)
|
||||||
(let ()
|
(define (has-proper-blame? msg)
|
||||||
(define (has-proper-blame? msg)
|
(define reg
|
||||||
(define reg
|
(cond
|
||||||
(cond
|
[(eq? blame 'pos) #rx"blaming: pos"]
|
||||||
[(eq? blame 'pos) #rx"blaming: pos"]
|
[(eq? blame 'neg) #rx"blaming: neg"]
|
||||||
[(eq? blame 'neg) #rx"blaming: neg"]
|
[(string? blame) (string-append "blaming: " (regexp-quote blame))]
|
||||||
[(string? blame) (string-append "blaming: " (regexp-quote blame))]
|
[else #f]))
|
||||||
[else #f]))
|
(and reg (regexp-match? reg msg)))
|
||||||
|
(contract-eval
|
||||||
(when reg
|
#:test-case-name name
|
||||||
(unless (regexp-match? reg msg)
|
`(,test-an-error
|
||||||
(eprintf "ACK!! ~s ~s\n" blame msg)
|
',name
|
||||||
(custodian-shutdown-all (current-custodian))))
|
(lambda () ,expression)
|
||||||
(and reg (regexp-match? reg msg)))
|
',expression
|
||||||
(contract-eval
|
(lambda (exn)
|
||||||
#:test-case-name name
|
(and (exn:fail:contract:blame? exn)
|
||||||
`(,test-an-error
|
(,has-proper-blame? (exn-message exn))))))
|
||||||
',name
|
(let/ec k
|
||||||
(lambda () ,expression)
|
(let ([rewritten (rewrite-to-add-opt/c expression k)])
|
||||||
',expression
|
(contract-eval
|
||||||
(lambda (exn)
|
#:test-case-name (format "~a rewrite-to-add-opt/c" name)
|
||||||
(and (exn:fail:contract:blame? exn)
|
`(,test-an-error
|
||||||
(,has-proper-blame? (exn-message exn))))))
|
',(string->symbol (format "~a+opt/c" name))
|
||||||
(let/ec k
|
(lambda () ,rewritten)
|
||||||
(let ([rewritten (rewrite-to-add-opt/c expression k)])
|
',rewritten
|
||||||
(contract-eval
|
(lambda (exn)
|
||||||
#:test-case-name (format "~a rewrite-to-add-opt/c" name)
|
(and (exn:fail:contract:blame? exn)
|
||||||
`(,test-an-error
|
(,has-proper-blame? (exn-message exn)))))))))
|
||||||
',name
|
|
||||||
(lambda () ,rewritten)
|
|
||||||
',rewritten
|
|
||||||
(lambda (exn)
|
|
||||||
(and (exn:fail:contract:blame? exn)
|
|
||||||
(,has-proper-blame? (exn-message exn))))))))))
|
|
||||||
|
|
||||||
(define (test/pos-blame name expression) (test/spec-failed name expression 'pos))
|
(define (test/pos-blame name expression) (test/spec-failed name expression 'pos))
|
||||||
(define (test/neg-blame name expression) (test/spec-failed name expression 'neg))
|
(define (test/neg-blame name expression) (test/spec-failed name expression 'neg))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user