A dynamically distributed ruby test runner.
How Detest works:
- Start a publisher which collects a list of all test files to be run.
- Put that list of files into a Redis set.
- Run a list of workers which pull files 1-by-1 from the list until there is no work left.
This is in contrast to other distributed testing frameworks, which attempt to either guess how to distribute test files ahead of time, or rely on previous measurements.
Previous measurements aren't good in some cases because:
- The amount of time a file takes to run can vary and change over time.
- If your test suite takes a long time to run, you at some point will need to run and measure all of the files in the suite - which can take quite a while.
Added bonuses of this approach:
- You can augment and upgrade the testing approach, including adding measurement instrumentation, just by upgrading the adapter. You need do nothing to your code, just upgrade the gem.
- The since the adapter handles how work is divided, changes in testing strategy can be adapted in the gem with no change to the target project source code.
Currently Detest only supports RSpec and select Cucumber versions.
Support for Cucumber is planned once RSpec support is stable.
Entities granted a license other than the CC based license are provided under the licenses
directory.