[racket] Rackunit best practices

From: Laurent (laurent.orseau at gmail.com)
Date: Thu Aug 22 02:27:00 EDT 2013

Quickly: It is common to use a  submodule for tests, in the same source
(module+ test
  (require rackunit)

then running `raco test <file.rkt> ...` will run all the tests. Such tests
are also automatically run in DrRacket when you press run (along with the
'main' submodule).

For packages that have a collection A, it is also common (and considered
good practice) to have another collection 'test' with a subdirectory for A
and its tests.
See for example the xml-rpc repo: https://github.com/jeapostrophe/xml-rpc
This is partly intended for use with DrDr (that runs `raco test`), a tool
written by Jay for the development of Racket. I don't know much more about
it, but other people on this list do.


On Thu, Aug 22, 2013 at 7:54 AM, Chad Albers <calbers at neomantic.com> wrote:

> As a Ruby engineer, we have a wonderful tool called "guard" that
> automatically runs our unit-tests every time a test-case changes or
> every-time a source file changes.
> I have written a guard plugin that performs the same task for Racket's
> rackunit.  Currently, it pretty primitive - guard runs all tests if
> anything changes - and it makes several assumptions about how tests
> are structured.
> guard's ruby unit test plug works so well because there is a set of
> informal conventions that Ruby developers follow, and guard's ruby
> plugin works so well because it can counts on those conventions.
> Before I release "guard-rackunit" to the general public, I am
> wondering if similar conventions exist for rackunit.
> For instance, in my Racket project, the following conditions hold true
> 1. all tests are located at the root of the project in a directory call
> "tests"
> 2. in the "tests" directory, I have a "test-runner.rkt" file that
> performs all '(run-tests *).
> 3. Each test-suite file contains one 'provide' which corresponds to
> the name of the test-suite
> 4. Each test-suite file is name after the file that it tests and
> appends "-test.rkt"; eg. foo.rkt corresponds to foo-test.rkt
> If the Racket community follows a different set of conventions, I can
> change my guard plugin to follow those conventions, and only have
> guard run a test suite for the file it tests.
> Let me know 1) if there is any interest in this project, and 2) a set
> of conventions that I can generally depend upon.
> Thanks,
> Chad
> ____________________
>   Racket Users list:
>   http://lists.racket-lang.org/users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20130822/9b06d81a/attachment-0001.html>

Posted on the users mailing list.