diff --git a/scribble-lib/scribble/eval.rkt b/scribble-lib/scribble/eval.rkt index 5f42914d..249447a2 100644 --- a/scribble-lib/scribble/eval.rkt +++ b/scribble-lib/scribble/eval.rkt @@ -325,8 +325,25 @@ (when expect (let ([expect (do-plain-eval ev (car expect) #t)]) (unless (equal? val expect) - (error 'eval "example result check failed: ~.s" s)))) + (define result " result: ") + (define expected " expected: ") + (error 'eval "example result check failed: ~.s\n~a\n~a\n" + s + (string-append result (to-lines val (string-length result))) + (string-append expected (to-lines expect (string-length expected))))))) render+output) + + (define (to-lines exps blank-space) + (define blank (make-string blank-space #\space)) + (apply + string-append + (for/list ([exp (in-list exps)] + [i (in-naturals)]) + (define first-line? (= i 0)) + (if (= i 0) + (format "~e" exp) + (format "\n~a~e" blank exp))))) + (lambda (str) (if (eval-results? str) (list #f