From cc7a64c5ee708e0c95e13a0d970b2f8f15bf5e5d Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Fri, 16 Aug 2019 11:28:54 -0700 Subject: [PATCH] update test infra --- quad/qtest/all-tests.rkt | 15 ++++++++ quad/qtest/all.rkt | 43 ---------------------- quad/qtest/paths-to-test.rkt | 14 +++++++ quad/qtest/raco.rkt | 3 +- quad/qtest/test-baseline-shift-tester.pdf | Bin 0 -> 8466 bytes quad/qtest/test-docs-tester.pdf | Bin 37626 -> 37626 bytes quad/qtest/test-emoji-tester.pdf | Bin 311487 -> 311487 bytes quad/qtest/test-fallback-mini-tester.pdf | Bin 10845 -> 10845 bytes quad/qtest/test-fallback-super-tester.pdf | Bin 160075 -> 160075 bytes quad/qtest/test-hello-tester.pdf | Bin 7716 -> 7716 bytes quad/qtest/test-image-tester.pdf | Bin 583031 -> 583031 bytes quad/qtest/test-kafka-tester.pdf | Bin 39531 -> 39531 bytes quad/qtest/test-ot-features-tester.pdf | Bin 0 -> 8924 bytes quad/qtest/test-sections-tester.pdf | Bin 11644 -> 11644 bytes quad/qtest/test-symbol-tester.pdf | Bin 13737 -> 13737 bytes quad/qtest/update-tests.rkt | 9 +++++ 16 files changed, 40 insertions(+), 44 deletions(-) create mode 100644 quad/qtest/all-tests.rkt delete mode 100644 quad/qtest/all.rkt create mode 100644 quad/qtest/paths-to-test.rkt create mode 100644 quad/qtest/test-baseline-shift-tester.pdf create mode 100644 quad/qtest/test-ot-features-tester.pdf create mode 100644 quad/qtest/update-tests.rkt diff --git a/quad/qtest/all-tests.rkt b/quad/qtest/all-tests.rkt new file mode 100644 index 00000000..062359de --- /dev/null +++ b/quad/qtest/all-tests.rkt @@ -0,0 +1,15 @@ +#lang racket +(require quadwriter + pitfall/check-pdf + racket/runtime-path + "paths-to-test.rkt") + +(for ([test-path (in-list (test-paths))]) + (define pdf-path (path-replace-extension test-path #".pdf")) + (define-values (dir name _) (split-path test-path)) + (displayln (path->string name)) + (check-pdfs-equal? (time (parameterize ([quadwriter-test-mode #t] + [current-output-port (open-output-nowhere)]) + (render-pdf (dynamic-require test-path 'doc) pdf-path test-path) + pdf-path)) + (test-pdf-name test-path))) \ No newline at end of file diff --git a/quad/qtest/all.rkt b/quad/qtest/all.rkt deleted file mode 100644 index 482c82c4..00000000 --- a/quad/qtest/all.rkt +++ /dev/null @@ -1,43 +0,0 @@ -#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 - (define-runtime-path rp PATH) - (time - (parameterize ([quadwriter-test-mode #t]) - (render-pdf (dynamic-require PATH 'doc) PDF-NAME rp))) - (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-to-test) - 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-sections.rkt" - "test-symbol.rkt" - "test-image.rkt") diff --git a/quad/qtest/paths-to-test.rkt b/quad/qtest/paths-to-test.rkt new file mode 100644 index 00000000..0370ba3c --- /dev/null +++ b/quad/qtest/paths-to-test.rkt @@ -0,0 +1,14 @@ +#lang racket/base +(require racket/runtime-path) +(provide (all-defined-out)) + +(define-runtime-path here ".") + +(define (test-paths) + (for/list ([test-path (in-directory here)] + #:when (regexp-match #rx"test-.*.rkt$" (path->string test-path))) + test-path)) + + +(define (test-pdf-name path) + (path-add-extension (path-replace-extension path #".pdf") #"" #"-tester.")) \ No newline at end of file diff --git a/quad/qtest/raco.rkt b/quad/qtest/raco.rkt index c3b185f5..ef4b7f18 100644 --- a/quad/qtest/raco.rkt +++ b/quad/qtest/raco.rkt @@ -8,7 +8,8 @@ (λ () (match (with-handlers ([exn:fail? (λ (exn) #f)]) (vector-ref (current-command-line-arguments) 0)) - ["test" (dynamic-require 'qtest/all #f)] + ["test" (dynamic-require 'qtest/all-tests #f)] + ["update" (dynamic-require 'qtest/update-tests #f)] [_ (displayln "no cmd given")])) #:logger qtest-logger 'info diff --git a/quad/qtest/test-baseline-shift-tester.pdf b/quad/qtest/test-baseline-shift-tester.pdf new file mode 100644 index 0000000000000000000000000000000000000000..866043b0af5d324c66245c7a90be52e75c939158 GIT binary patch literal 8466 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 ae3f>4G~5pTD}w?&yaEKw%+gO~2>u_R_#?dl literal 0 HcmV?d00001 diff --git a/quad/qtest/test-docs-tester.pdf b/quad/qtest/test-docs-tester.pdf index 7d28a589ba2782e07ce2b78b93189b87a10a649c..40e2fa784709c0708e482b197362ae6873e29d0c 100644 GIT binary patch delta 202 zcmeyhluGA}Fg0bHl2nw({yLz|< zJ5OeFybEP+e(9Lc1Y^g!RP(d>M!CB=hflsA{20L$+k7v?l?j<|A1=Ye=I;^c92`D5 sHu*7>x!EnHhzZ8tmzJWy798mx6&5mCqx~6_xmlzmiW$Z(>26~O03?1y-v9sr delta 202 zcmeyhluGA}Fg0bHl2nw*d`G1-k_~yHCC!{20L$+k7v?l?j<|A1=Ye=H%k$;TJqP sHu*7>x!EnHhzZ8tmzJWy=H=}Z=;bt7qx~6_xmlzmiW$Z(>26~O09ElsRsaA1 diff --git a/quad/qtest/test-emoji-tester.pdf b/quad/qtest/test-emoji-tester.pdf index 8b23fef853579c8ffb20be8d9d11cb289ae411dd..21a1a0290f2622982ddfe235317e71b30212e076 100644 GIT binary patch delta 163 zcmdnrD7?Q>c!Rt)tGT7QiAA%DcDsr;BM>tIG4pm6ZI%~StZr^m!I9eq(^&W!p={N3 zmO5Q1d&Lx%3P!d7r-c!Rt)tAT-$k$JOtIG4pm6ZI%~StS-*p&VJhk(^&W!p={N3 zmO5Q1d&Lx%3Pv`UP%qa2r|D|bSRO#x+j*w5urk3o;xk#471-PZ!<|ArraSCpd4|N6 Z-0r%I#g`dbWV+T&7Q^k2_Oje%0szwgFsuLo diff --git a/quad/qtest/test-fallback-mini-tester.pdf b/quad/qtest/test-fallback-mini-tester.pdf index c8db01133edb7238b4c7be5e77282a954bcf9997..c4ddbef74c310e9b2d2f86de1e91a84c7225caac 100644 GIT binary patch delta 135 zcmcZ`ayMjyB{Pe;rMbywTjrNcYyn;_0d8)ab=deAVQdF>QMhTjrNcY(YML0U=?Vb=deAVQdF>QMhOT2e&NC=;^PyZ3 zCK&rp{zae?kAQIZfXSN+A3>R$XBY7Um4JntH7W0oXnGP7s}lHK7)@5#%9hw%gE;H=i?UQHu+l4GbnTOpR$XBY7^LD|h4O15t(VboJ)i*#~!3ig@)WG3SSD0};< zS&R!{659(7FfvN9MTYqJ1qDw}yv-;+z3&#|S*XBvpg<5avh4N?_Za8bvw8aYh5H3f dPmE`hoZc75bQUVG9Vnp7i!8f+Z4T2s763}uYi9re diff --git a/quad/qtest/test-hello-tester.pdf b/quad/qtest/test-hello-tester.pdf index e1d950596bf2dbd6300fb1995c291e6e2cdc4759..4356b5b58d6f9cecc9394c941f55dd0ea2ab704f 100644 GIT binary patch delta 60 zcmZ2tv&3dYJrj$$rMcF7M2#)7Pc1lEgWx;vzl9)n;LBYbetnroXy)k+|emyy5j>5 a$?19bInF`_wgUxjFd@rsw|LB9&jbK**B<}? delta 85 zcmexF7M2#)7Pc1lEgWx;vl5 a$?19bInF`_wgUxjFd@rsw|LB9&jbK(Y##jp diff --git a/quad/qtest/test-kafka-tester.pdf b/quad/qtest/test-kafka-tester.pdf index 338e2750edd302c046a6342757a5fd7451d54803..fc84409583f25e2feb677d768c7cbcd9fb46947b 100644 GIT binary patch delta 90 zcmaF8h3WMcrVY`Ntmc;HriPmnBG2=)d58M=ghx&`&Aba`ZkEUjV1lvpa+1{8oWi_= Y-5n=ioAeCI+hx<&0M;ZSGXMYp delta 90 zcmaF8h3WMcrVY`NtOf=~#s-@cBG2=)xwv@w`UFlk&Aba`ZkEUjV1lvpa+1{8!u*0F YBYY=coAeCI+hx<&0KUf|IRF3v diff --git a/quad/qtest/test-ot-features-tester.pdf b/quad/qtest/test-ot-features-tester.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4b15d9b8a30397296be407f763d32ddccefdb6fb GIT binary patch literal 8924 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 Se??FbBFK-+%nVhP#r;2hj|~L? literal 0 HcmV?d00001 diff --git a/quad/qtest/test-sections-tester.pdf b/quad/qtest/test-sections-tester.pdf index 09cfe61025af26321dae9fe334b942085eb34757..dfa9f6ea391941d9502e92df21a02f9def23a1db 100644 GIT binary patch delta 60 zcmewp^(ShB9WRTyrMc;5C*HLZY>|P!?#@n=AF4@C=2JThU@cAsn@Ek4;q;w%z(vz#OkOnS3{^aEkG$e=I}SI5a>`p=-u%}fTX Lm|*NpM&FqL#3L%g diff --git a/quad/qtest/update-tests.rkt b/quad/qtest/update-tests.rkt new file mode 100644 index 00000000..8cf2ab85 --- /dev/null +++ b/quad/qtest/update-tests.rkt @@ -0,0 +1,9 @@ +#lang racket/base +(require quadwriter + "paths-to-test.rkt") + +(for ([test-path (in-list (test-paths))]) + (define-values (dir name _) (split-path test-path)) + (displayln (path->string name)) + (time (parameterize ([quadwriter-test-mode #t]) + (render-pdf (dynamic-require test-path 'doc) (test-pdf-name test-path) test-path)))) \ No newline at end of file