(define (call-test-print name expected thunk) (test name expected (with-output-to-string thunk))) (define-syntax (test-print name expected sexp) `(call-test-print ,name ,expected (lambda () ,sexp))) (test-print "fake example" "hi\n" (print "hi")) [hangs forever]