#lang racket (require quadwriter pitfall/check-pdf racket/runtime-path) (define-for-syntax (test-pdf-name path) (path-add-extension (path-replace-extension path #".pdf") #"" #"-tester.")) (define-syntax (make-test-pdf stx) (syntax-case stx () [(_) #'(begin)] [(_ PATH . REST) (with-syntax ([PDF-NAME (test-pdf-name (syntax-e #'PATH))]) #'(begin (parameterize ([quadwriter-test-mode #t]) (render-pdf (dynamic-require PATH 'doc) PDF-NAME)) (make-test-pdf . REST)))])) (define-syntax (test-each stx) (syntax-case stx () [(_) #'(begin)] [(_ MOD-PATH . REST) (with-syntax ([PDF-NAME (test-pdf-name (syntax-e #'MOD-PATH))]) #'(begin (define-runtime-path path-to-test MOD-PATH) (define-runtime-path test-base PDF-NAME) (println MOD-PATH) (define-runtime-path path (path-replace-extension MOD-PATH #".pdf")) (check-pdfs-equal? (time (parameterize ([quadwriter-test-mode #t] [current-output-port (open-output-nowhere)]) (render-pdf (dynamic-require path-to-test 'doc) path) path)) test-base) (test-each . REST)))])) (test-each "test-docs.rkt" "test-emoji.rkt" "test-fallback-mini.rkt" "test-fallback-super.rkt" "test-hello.rkt" "test-kafka.rkt" "test-symbol.rkt" "test-image.rkt")