Redirecting to ...

Rainbows! test suite - YES OUR TEST SUITE IS CONCURRENT!

These are all integration tests that start the server on random, unused TCP ports or Unix domain sockets. They're all designed to run concurrently with other tests to minimize test time, but tests may be run independently as well.

We write our tests primarily in Bourne shell because that's what we're comfortable writing integration tests with. This test suite is also easily portable to non-Ruby web servers.


We do not use bashisms or any non-portable, non-POSIX constructs in our shell code. We use the “pipefail” option if available and mainly test with ksh, but occasionally with dash and bash, too.

Running Tests

*BSD users: use “gmake” instead of “make”

To run the entire test suite with 8 tests running at once:

make -j8

To run one individual test for all concurrency models:


To run one individual test for one concurrency model:


To run all tests for one concurrency model:

make EventMachine

You may also increase verbosity by setting the “V” variable for GNU make. To disable trapping of stdout/stderr:

make V=1

To enable the “set -x” option in shell scripts to trace execution

make V=2


Some of the tests are rather I/O intensive due to the rewindability requirement of “rack.input” in the Rack specification and the somewhat complicated (but awesome!) nature of the TeeInput class leading us to test it very heavily. If you have lots of RAM and a large tmpfs partition, it is advisable to set your TMPDIR and also make the t/trash/ directory a symlink to a directory inside in your TMPDIR.

Originally generated with the Darkfish Rdoc Generator 2, modified by wrongdoc.

We love to hear from you!
Email patches (with git send-email), pull requests, questions, bug reports, suggestions, etc. to us publically at
No subscription to the mailing list is necessary, just let us know to Cc: you if you're unsubscribed.
To subscribe, email with "subscribe" in the Subject and respond to the automated confirmation message.
Do not waste bandwidth with HTML, HTML mail will not be read.
Quote only parts you're responding to and do not top post.
For sensitive topics, email us privately at