From a10e570edd441f9c6e9dfba6362b5028f58f394c Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 22 Jul 2015 10:53:30 -0600 Subject: [PATCH] tests for submodules+source It happens that an old test also covers submodules+collects-dest, due to a change in a module implementation to refer to a submodule. --- .../tests/compiler/embed/embed-me25.rkt | 9 ++ .../tests/compiler/embed/embed-me26.rkt | 10 ++ .../tests/compiler/embed/embed-me27.rkt | 3 + compiler-test/tests/compiler/embed/test.rkt | 92 +++++++++++++------ 4 files changed, 87 insertions(+), 27 deletions(-) create mode 100644 compiler-test/tests/compiler/embed/embed-me25.rkt create mode 100644 compiler-test/tests/compiler/embed/embed-me26.rkt create mode 100644 compiler-test/tests/compiler/embed/embed-me27.rkt diff --git a/compiler-test/tests/compiler/embed/embed-me25.rkt b/compiler-test/tests/compiler/embed/embed-me25.rkt new file mode 100644 index 0000000000..59d7f600a9 --- /dev/null +++ b/compiler-test/tests/compiler/embed/embed-me25.rkt @@ -0,0 +1,9 @@ +#lang racket/base + +(module+ main + 12) + +(module submod racket/base + 11) + +10 diff --git a/compiler-test/tests/compiler/embed/embed-me26.rkt b/compiler-test/tests/compiler/embed/embed-me26.rkt new file mode 100644 index 0000000000..979fe8ec32 --- /dev/null +++ b/compiler-test/tests/compiler/embed/embed-me26.rkt @@ -0,0 +1,10 @@ +#lang racket/base + +(module+ main + 12) + +(module submod racket/base + 11) + +10 +(require (submod "embed-me27.rkt" other-submod)) diff --git a/compiler-test/tests/compiler/embed/embed-me27.rkt b/compiler-test/tests/compiler/embed/embed-me27.rkt new file mode 100644 index 0000000000..6db0fbf611 --- /dev/null +++ b/compiler-test/tests/compiler/embed/embed-me27.rkt @@ -0,0 +1,3 @@ +#lang racket/base + +(module+ other-submod 'y) diff --git a/compiler-test/tests/compiler/embed/test.rkt b/compiler-test/tests/compiler/embed/test.rkt index ab22506563..ef67538317 100644 --- a/compiler-test/tests/compiler/embed/test.rkt +++ b/compiler-test/tests/compiler/embed/test.rkt @@ -267,7 +267,6 @@ (define (try-basic) (mz-tests #f) (mz-tests #t) - (begin (prepare mr-dest "embed-me5.rkt") (make-embedding-executable @@ -288,11 +287,15 @@ "raco.exe" "raco"))) +(define (system+ . args) + (printf "> ~a\n" (car (reverse args))) + (apply system* args)) + (define (short-mzc-tests mred?) (parameterize ([current-directory (find-system-path 'temp-dir)]) ;; raco exe - (system* raco + (system+ raco "exe" "-o" (path->string (mk-dest mred?)) (if mred? "--gui" "--") @@ -300,7 +303,7 @@ (try-exe (mk-dest mred?) "This is 1\n" mred?) ;; raco exe on a module with a `main' submodule - (system* raco + (system+ raco "exe" "-o" (path->string (mk-dest mred?)) (if mred? "--gui" "--") @@ -312,7 +315,7 @@ (parameterize ([current-directory (find-system-path 'temp-dir)]) ;; raco exe - (system* raco + (system+ raco "exe" "-o" (path->string (mk-dest mred?)) (if mred? "--gui" "--") @@ -320,7 +323,7 @@ (try-exe (mk-dest mred?) "This is 1\n" mred?) ;; raco exe on a module with a `main' submodule - (system* raco + (system+ raco "exe" "-o" (path->string (mk-dest mred?)) (if mred? "--gui" "--") @@ -328,7 +331,7 @@ (try-exe (mk-dest mred?) "This is 16.\n" mred?) ;; raco exe on a module with a `main' submodule+ - (system* raco + (system+ raco "exe" "-o" (path->string (mk-dest mred?)) (if mred? "--gui" "--") @@ -336,7 +339,7 @@ (try-exe (mk-dest mred?) "This is 20.\n" mred?) ;; raco exe on a module with a `configure-runtime' submodule - (system* raco + (system+ raco "exe" "-o" (path->string (mk-dest mred?)) (if mred? "--gui" "--") @@ -344,7 +347,7 @@ (try-exe (mk-dest mred?) "Configure!\nThis is 22.\n" mred?) ;; raco exe on a module with serialization - (system* raco + (system+ raco "exe" "-o" (path->string (mk-dest mred?)) (if mred? "--gui" "--") @@ -352,7 +355,7 @@ (try-exe (mk-dest mred?) "1\n2\n" mred?) ;; raco exe --launcher - (system* raco + (system+ raco "exe" "--launcher" "-o" (path->string (mk-dest mred?)) @@ -362,7 +365,7 @@ ;; the rest use mzc... - (system* mzc + (system+ mzc (if mred? "--gui-exe" "--exe") (path->string (mk-dest mred?)) (path->string (build-path (collection-path "tests" "compiler" "embed") "embed-me1.rkt"))) @@ -371,7 +374,7 @@ (define (check-collection-path prog lib in-main?) ;; Check that etc.rkt isn't found if it's not included: (printf ">>not included\n") - (system* mzc + (system+ mzc (if mred? "--gui-exe" "--exe") (path->string (mk-dest mred?)) (path->string (build-path (collection-path "tests" "compiler" "embed") prog))) @@ -379,7 +382,7 @@ ;; And it is found if it is included: (printf ">>included\n") - (system* mzc + (system+ mzc (if mred? "--gui-exe" "--exe") (path->string (mk-dest mred?)) "++lib" lib @@ -388,7 +391,7 @@ ;; Or, it's found if we set the collection path: (printf ">>set coll path\n") - (system* mzc + (system+ mzc (if mred? "--gui-exe" "--exe") (path->string (mk-dest mred?)) "--collects-path" @@ -400,7 +403,7 @@ ;; Or, it's found if we set the collection path and the config path (where the latter ;; finds links for packages): (printf ">>set coll path plus config\n") - (system* mzc + (system+ mzc (if mred? "--gui-exe" "--exe") (path->string (mk-dest mred?)) "--collects-path" @@ -413,7 +416,7 @@ ;; Try --collects-dest mode (printf ">>--collects-dest\n") - (system* mzc + (system+ mzc (if mred? "--gui-exe" "--exe") (path->string (mk-dest mred?)) "++lib" lib @@ -423,7 +426,7 @@ (try-exe (mk-dest mred?) "This is 6\n#t\n" mred? void "cts") ; <- cts copied to distribution (delete-directory/files "cts") (parameterize ([current-error-port (open-output-nowhere)]) - (test #f system* (mk-dest mred?)))) + (test #f system+ (mk-dest mred?)))) (check-collection-path "embed-me6b.rkt" "racket/fixnum.rkt" #t) (check-collection-path "embed-me6.rkt" "mzlib/etc.rkt" ;; "mzlib" is found via the "collects" path @@ -464,11 +467,11 @@ (make-directory* ext-dir) - (system* mzc + (system+ mzc "--cc" "-d" (path->string (path-only obj-file)) (path->string (build-path (collection-path "tests" "compiler" "embed") "embed-me8.c"))) - (system* mzc + (system+ mzc "--ld" (path->string ext-file) (path->string obj-file)) @@ -478,7 +481,7 @@ (copy-file (build-path (collection-path "tests" "compiler" "embed") "embed-me9.rkt") ss-file) - (system* mzc + (system+ mzc (if mred? "--gui-exe" "--exe") (path->string (mk-dest mred?)) (path->string ss-file)) @@ -489,7 +492,7 @@ (delete-directory/files ext-base-dir))) ;; openssl, which needs extra binaries under Windows - (system* mzc + (system+ mzc (if mred? "--gui-exe" "--exe") (path->string (mk-dest mred?)) (path->string (build-path (collection-path "tests" "compiler" "embed") "embed-me10.rkt"))) @@ -502,7 +505,7 @@ (define (try-gracket) ;; A GRacket-specific test with mzc: (parameterize ([current-directory (find-system-path 'temp-dir)]) - (system* mzc + (system+ mzc "--gui-exe" (path->string (mk-dest #t)) (path->string (build-path (collection-path "tests" "compiler" "embed") "embed-me5.rkt"))) @@ -557,14 +560,46 @@ ;; ---------------------------------------- +(define (try-source) + (define (try-one file submod start result) + (define mred? #f) + (define dest (mk-dest mred?)) + + (printf "> ~a ~s from source\n" file submod) + (create-embedding-executable + dest + #:modules `((#%mzc: ,(collection-file-path file "tests/compiler/embed") ,submod)) + #:configure-via-first-module? #t + #:literal-expression + (parameterize ([current-namespace (make-base-namespace)]) + (compile + `(begin + (namespace-require ',start)))) + #:src-filter (lambda (p) (or (equal? p (collection-file-path "embed-me25.rkt" "tests/compiler/embed")) + (equal? p (collection-file-path "embed-me26.rkt" "tests/compiler/embed")) + (equal? p (collection-file-path "embed-me27.rkt" "tests/compiler/embed")))) + #:get-extra-imports (lambda (src mod) + (list 'racket/base/lang/reader))) + + (try-exe dest result mred?)) + + (try-one "embed-me25.rkt" null ''|#%mzc:embed-me25| "10\n") + (try-one "embed-me25.rkt" '(main) '(submod '|#%mzc:embed-me25| main) "10\n12\n") + (try-one "embed-me25.rkt" '(submod) '(submod '|#%mzc:embed-me25| submod) "11\n") + (try-one "embed-me26.rkt" null ''|#%mzc:embed-me26| "'y\n10\n") + (try-one "embed-me26.rkt" '(submod) '(submod '|#%mzc:embed-me26| submod) "11\n") + (try-one "embed-me26.rkt" '(main) '(submod '|#%mzc:embed-me26| main) "'y\n10\n12\n")) + +;; ---------------------------------------- + (define planet (build-path (find-console-bin-dir) (if (eq? 'windows (system-type)) "planet.exe" "planet"))) (define (try-planet) - (system* raco "planet" "link" "racket-tester" "p1.plt" "1" "0" + (system+ raco "planet" "link" "racket-tester" "p1.plt" "1" "0" (path->string (collection-path "tests" "compiler" "embed" "embed-planet-1"))) - (system* raco "planet" "link" "racket-tester" "p2.plt" "2" "2" + (system+ raco "planet" "link" "racket-tester" "p2.plt" "2" "2" (path->string (collection-path "tests" "compiler" "embed" "embed-planet-2"))) (let ([go (lambda (path expected) @@ -575,7 +610,7 @@ #:exists 'truncate (lambda () (printf "#lang racket/base (require ~s)\n" path))) - (system* mzc "--exe" (path->string dest) (path->string tmp)) + (system+ mzc "--exe" (path->string dest) (path->string tmp)) (try-exe dest expected #f) (delete-directory/files dest) @@ -597,8 +632,8 @@ (void)) - (system* raco "planet" "unlink" "racket-tester" "p1.plt" "1" "0") - (system* raco "planet" "unlink" "racket-tester" "p2.plt" "2" "2")) + (system+ raco "planet" "unlink" "racket-tester" "p1.plt" "1" "0") + (system+ raco "planet" "unlink" "racket-tester" "p2.plt" "2" "2")) ;; ---------------------------------------- @@ -606,7 +641,7 @@ (define (try-one src) (printf "Trying ~a...\n" src) (define exe (path->string (mk-dest #f))) - (system* raco + (system+ raco "exe" "-o" exe "--" @@ -621,6 +656,7 @@ ;; ---------------------------------------- +#| REMOVEME (try-basic) (try-mzc) (try-extension) @@ -628,6 +664,8 @@ (try-reader) (try-planet) (try-*sl) +|# +(try-source) ;; ---------------------------------------- ;; Make sure that embedding does not break future module declarations