From 0801525931be9e9542230091748d366a114cbeb9 Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Wed, 16 Feb 2011 14:01:08 -0500 Subject: [PATCH] Merge in the docs test into the rest of the scribble tests. Also fixed it to scan all scrbl files in the docs directory, use runtime-path, and change the rest to racket to get the quoted printout right. --- collects/tests/scribble/collect.rkt | 2 +- collects/tests/scribble/docs.rkt | 58 +++++++++++--------- collects/tests/scribble/docs/print-lines.txt | 2 +- collects/tests/scribble/main.rkt | 8 ++- collects/tests/scribble/preprocessor.rkt | 4 +- collects/tests/scribble/reader.rkt | 4 +- 6 files changed, 44 insertions(+), 34 deletions(-) diff --git a/collects/tests/scribble/collect.rkt b/collects/tests/scribble/collect.rkt index ef4b233354..1c414a9b7c 100644 --- a/collects/tests/scribble/collect.rkt +++ b/collects/tests/scribble/collect.rkt @@ -1,4 +1,4 @@ -#lang scheme/base +#lang racket/base (require tests/eli-tester scribble/text/syntax-utils) diff --git a/collects/tests/scribble/docs.rkt b/collects/tests/scribble/docs.rkt index 86ca59b5ba..6071b12cbd 100644 --- a/collects/tests/scribble/docs.rkt +++ b/collects/tests/scribble/docs.rkt @@ -2,34 +2,42 @@ ;; Use text renderer to check some Scribble functionality -;; ---------------------------------------- +(require scribble/base-render (prefix-in text: scribble/text-render) + racket/file racket/class racket/runtime-path tests/eli-tester) -(require scribble/base-render - racket/file - racket/class - (prefix-in text: scribble/text-render)) +(define-runtime-path source-dir "docs") +(define work-dir (build-path (find-system-path 'temp-dir) + "scribble-docs-tests")) (define (build-text-doc src-file dest-file) - (define dir (find-system-path 'temp-dir)) - (let ([renderer (new (text:render-mixin render%) - [dest-dir dir])]) - (let* ([docs (list (dynamic-require `(file ,src-file) 'doc))] - [fns (list (build-path dir dest-file))] - [fp (send renderer traverse docs fns)] - [info (send renderer collect docs fns fp)]) - (let ([r-info (send renderer resolve docs fns info)]) - (send renderer render docs fns r-info))))) + (let* ([renderer (new (text:render-mixin render%) [dest-dir work-dir])] + [docs (list (dynamic-require src-file 'doc))] + [fns (list (build-path work-dir dest-file))] + [fp (send renderer traverse docs fns)] + [info (send renderer collect docs fns fp)] + [r-info (send renderer resolve docs fns info)]) + (send renderer render docs fns r-info))) -(define (check-text-build name) - (define src-file (string-append "docs/" name ".scrbl")) - (define expect-file (string-append "docs/" name ".txt")) +(define (check-text-build src-file expect-file) (build-text-doc src-file "gen.txt") - (unless (string=? (file->string expect-file) - (file->string (build-path (find-system-path 'temp-dir) - "gen.txt"))) - (error 'check-text-build "mismatch from: ~e expected: ~e" - src-file expect-file))) + (define (contents file) (regexp-replace #rx"\n+$" (file->string file) "")) + (string=? (contents expect-file) (contents (build-path work-dir "gen.txt")))) -;; ---------------------------------------- - -(check-text-build "print-lines") +(provide docs-tests) +(define (docs-tests) + (when (or (file-exists? work-dir) (directory-exists? work-dir)) + (delete-directory/files work-dir)) + (make-directory work-dir) + (dynamic-wind void + (lambda () + (define files (map path-element->string (directory-list source-dir))) + (for ([scrbl (in-list files)] + #:when (regexp-match? #rx"\\.scrbl$" scrbl) + [txt (in-value (regexp-replace #rx"\\.scrbl$" scrbl ".txt"))] + #:when (member txt files)) + ;; (printf "Testing ~s -> ~s\n" scrbl txt) + (test #:failure-message + (format "mismatch from: \"~a\" expected: \"~a\"" scrbl txt) + (check-text-build (build-path source-dir scrbl) + (build-path source-dir txt))))) + (lambda () (delete-directory/files work-dir)))) diff --git a/collects/tests/scribble/docs/print-lines.txt b/collects/tests/scribble/docs/print-lines.txt index 707a419e8d..89fb1867d8 100644 --- a/collects/tests/scribble/docs/print-lines.txt +++ b/collects/tests/scribble/docs/print-lines.txt @@ -15,4 +15,4 @@ Example: (b ("b-arg")) (c (("first c1" "second c1") ("first c2" "second c2"))) (d #f) - (e ())) \ No newline at end of file + (e ())) diff --git a/collects/tests/scribble/main.rkt b/collects/tests/scribble/main.rkt index f94a956ab1..7ff28b445d 100644 --- a/collects/tests/scribble/main.rkt +++ b/collects/tests/scribble/main.rkt @@ -1,7 +1,9 @@ -#lang scheme/base +#lang racket/base -(require tests/eli-tester "reader.ss" "preprocessor.ss" "collect.ss") +(require tests/eli-tester + "reader.rkt" "preprocessor.rkt" "collect.rkt" "docs.rkt") (test do (reader-tests) do (begin/collect-tests) - do (preprocessor-tests)) + do (preprocessor-tests) + do (docs-tests)) diff --git a/collects/tests/scribble/preprocessor.rkt b/collects/tests/scribble/preprocessor.rkt index 84eae3e05d..aa2f894fcf 100644 --- a/collects/tests/scribble/preprocessor.rkt +++ b/collects/tests/scribble/preprocessor.rkt @@ -1,6 +1,6 @@ -#lang scheme/base +#lang racket/base -(require tests/eli-tester scheme/runtime-path scheme/port scheme/sandbox +(require tests/eli-tester racket/runtime-path racket/port racket/sandbox (prefix-in doc: (lib "scribblings/scribble/preprocessor.scrbl"))) (provide preprocessor-tests) diff --git a/collects/tests/scribble/reader.rkt b/collects/tests/scribble/reader.rkt index 41997d2031..5987b78ae7 100644 --- a/collects/tests/scribble/reader.rkt +++ b/collects/tests/scribble/reader.rkt @@ -1,6 +1,6 @@ -#lang scheme/base +#lang racket/base -(require tests/eli-tester (prefix-in scr: scribble/reader) scheme/list) +(require tests/eli-tester (prefix-in scr: scribble/reader) racket/list) (provide reader-tests)