[[ always cc list ]]

(module+ test ...) is a single sub-module that is distributed over the body of 
a module. Racket collects the pieces and makes a single submodule. 

-- Matthias




On Nov 21, 2014, at 3:13 PM, Joel McCracken <mccracken.j...@gmail.com> wrote:

> How would I run 1) all tests and 2) a selected subset (i.e. multiple
> modules at once)?
> 
> I'm relatively unfamiliar with Racket's module system (other than it
> exists and how to do basic things with it).
> 
> On Fri, Nov 21, 2014 at 3:00 PM, Matthias Felleisen
> <matth...@ccs.neu.edu> wrote:
>> 
>> 
>> I would use submodules to manage selective testing, like this:
>> 
>> #lang racket
>> 
>> (provide
>>  ;; -> Void
>>  ;; does foo and bar
>>  main)
>> 
>> ;; 
>> -----------------------------------------------------------------------------
>> ;; implementation
>> 
>> (require 2htdp/image)
>> 
>> ;; 
>> -----------------------------------------------------------------------------
>> (define (main)
>>  (displayln `(foo and bar)))
>> 
>> (module+ test
>>  (require rackunit)
>>  (check-equal? (main) (void)))
>> 
>> (module+ io-test
>>  (require rackunit)
>>  (check-equal? (with-output-to-string main) "(foo and bar)"))
>> 
>> 
>> Now run:
>> 
>> 
>>> $ raco test -s io-test foo.rkt
>>> raco test: (submod "foo.rkt" io-test)
>>> --------------------
>>> FAILURE
>>> actual:     "(foo and bar)\n"
>>> expected:   "(foo and bar)"
>>> name:       check-equal?
>>> location:   
>>> (#<path:/Users/matthias/Hub/P1/bootstrap-transfer-algebra/foo.rkt> 23 2 426 
>>> 59)
>>> expression: (check-equal? (with-output-to-string main) "(foo and bar)")
>>> 
>>> Check failure
>>> --------------------
>>> 1/1 test failures
>>> $ matthias% raco test foo.rkt
>>> raco test: (submod "foo.rkt" test)
>>> (foo and bar)
>>> 1 test passed


____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to