Yes, this works: #lang racket
(provide (contract-out (f (-> integer? integer?)) (g (-> integer? integer?)))) ;; f is blah blah (module+ test (require rackunit (submod "..")) (check-equal? (f 3) 3)) (define (f x) x) ;; g is blah blah (module+ test (require rackunit (submod "..")) (check-equal? (g 'a) 3)) (define (g x) x) On Mar 5, 2013, at 8:43 PM, Greg Hendershott wrote: >> Note that in his "decluttering" example, his module+ submodule >> does a (require (submod "..")). It turns out that a submodule >> that does this will get the contracted identifiers instead of the >> original ones (since `require` is allowed to overwrite bindings >> from the module's base module). > > Ah! I misunderstood it to be more complicated and thought I'd read > module* not module+. > > But it's utterly simple. > > In files that have many module+ forms interleaved with what they test, > I've already been putting a module+ near the top simply to require > rackunit: > > (module+ test > (require rackunit)) > > This simply needs to become: > > (module+ test > (require rackunit (submod ".."))) > > And bingo. > > Awesome. Thank you. > > On Tue, Mar 5, 2013 at 6:51 PM, Asumu Takikawa <as...@ccs.neu.edu> wrote: >> On 2013-03-05 17:48:51 -0500, Greg Hendershott wrote: >>> But it seems like the only choices are: >>> >>> - Keep using (provide (contract-out)) but switch back to lumping all >>> the tests together, in one module* (or even back to the old way of a >>> separate file). >> >> I think Matthias's solution was actually to let you use >> (provide (contract-out)) while still using module+ to group tests >> together. >> >> Note that in his "decluttering" example, his module+ submodule >> does a (require (submod "..")). It turns out that a submodule >> that does this will get the contracted identifiers instead of the >> original ones (since `require` is allowed to overwrite bindings >> from the module's base module). >> >> Cheers, >> Asumu ____________________ Racket Users list: http://lists.racket-lang.org/users