diff options
Diffstat (limited to 'tests/run-tests.scm')
-rwxr-xr-x | tests/run-tests.scm | 42 |
1 files changed, 28 insertions, 14 deletions
diff --git a/tests/run-tests.scm b/tests/run-tests.scm index 008090d0..b0cd4882 100755 --- a/tests/run-tests.scm +++ b/tests/run-tests.scm @@ -51,19 +51,22 @@ fi (define (yellow s) (escaped 33 s)) (define (bold s) (escaped 1 s)) -;;; TODO handle nested grups in a better fassion +(define (make-indent depth) + (make-string (* 2 depth) #\space)) (define (construct-test-runner) (define runner (test-runner-null)) + (define depth 0) ;; end of individual test case (test-runner-on-test-begin! runner (lambda (runner) (test-runner-aux-value! runner (transform-time-of-day (gettimeofday))))) (test-runner-on-test-end! runner (lambda (runner) + (when (verbose?) (display (make-indent depth))) (case (test-result-kind runner) ((pass) (display (green "X"))) - ((fail) (newline) (display (red "E"))) + ((fail) (display (red "E"))) ((xpass) (display (yellow "X"))) ((xfail) (display (yellow "E"))) ((skip) (display (yellow "-")))) @@ -75,15 +78,19 @@ fi => (lambda (p) (with-output-to-string (lambda () (display (bold "[SOURCE]: ")) (truncated-print p)))))))) (when (eq? 'fail (test-result-kind)) (cond ((test-result-ref runner 'actual-error) - => (lambda (err) (format #t "Error: ~s~%" err))) + => (lambda (err) (format #t "~aError: ~s~%" (make-indent (1+ depth)) err))) (else - (format #t "Expected: ~s~%Received: ~s~%" - (test-result-ref runner 'expected-value "[UNKNOWN]") - (test-result-ref runner 'actual-value "[UNKNOWN]")))) - (format #t "Near ~a:~a~%~y" + (format #t "~aExpected: ~s~%~aReceived: ~s~%" + (make-indent (1+ depth)) (test-result-ref runner 'expected-value "[UNKNOWN]") + (make-indent (1+ depth)) (test-result-ref runner 'actual-value "[UNKNOWN]")))) + (format #t "~aNear ~a:~a~%" + (make-indent (1+ depth)) (test-result-ref runner 'source-file) - (test-result-ref runner 'source-line) - (test-result-ref runner 'source-form))) + (test-result-ref runner 'source-line)) + (pretty-print (test-result-ref runner 'source-form) + (current-output-port) + per-line-prefix: (string-append (make-indent (1+ depth)) "> ") + )) (let ((start (test-runner-aux-value runner)) (end (transform-time-of-day (gettimeofday)))) @@ -97,12 +104,19 @@ fi (test-runner-on-group-begin! runner ;; count is number of #f (lambda (runner name count) - (format #t "~a ~a ~a~%" - (make-string 10 #\=) - name - (make-string 10 #\=)))) + (if (<= depth 1) + (format #t "~a ~a ~a~%" + (make-string 10 #\=) + name + (make-string 10 #\=)) + (when (verbose?) + (format #t "~a~a~%" (make-string (* depth 2) #\space) name))) + (set! depth (1+ depth)))) (test-runner-on-group-end! runner - (lambda (runner) (newline))) + (lambda (runner) + (set! depth (1- depth)) + (when (<= depth 1) + (newline)))) ;; after everything else is done (test-runner-on-final! runner (lambda (runner) |