<commit_before>Testbot is a test distribution tool that works with Rails, RSpec, RSpec2, Test::Unit and Cucumber. The basic idea is that you let testbot spread the load of running your tests across multiple machines to make the tests run faster.

Using testbot on 11 machines (25 cores) we got our test suite down to **2 minutes from 30**. [More examples of how testbot is used](http://github.com/joakimk/testbot/wiki/How-testbot-is-used).

If you intend to use testbot with cloud computing (like EC2), take a look at [TestbotCloud](https://github.com/joakimk/testbot_cloud).

Installing
----

    gem install testbot

Try it out
----

    testbot --server
    testbot --runner --connect localhost
    sleep 3 # wait for the runner to fully register with the server

    mkdir -p testbotdemo/test; cd testbotdemo
    echo 'require "test/unit"' > test/demo_test.rb
    echo 'class DemoTest < Test::Unit::TestCase; def test_first; end; end' >> test/demo_test.rb

    testbot --test --connect localhost
        
    # Cleanup
    testbot --server stop
    testbot --runner stop
    cd ..; rm -rf testbotdemo
    rm -rf /tmp/testbot

The project files from the demo project are synced to /tmp/testbot/$USER (default). The runner syncs the files to /tmp/testbot/project (default). The tests are then run and the results returned through the server and displayed.

How it works
----

Testbot is:
<commit_msg>3 seconds isn't enough.<commit_after>Testbot is a test distribution tool that works with Rails, RSpec, RSpec2, Test::Unit and Cucumber. The basic idea is that you let testbot spread the load of running your tests across multiple machines to make the tests run faster.

Using testbot on 11 machines (25 cores) we got our test suite down to **2 minutes from 30**. [More examples of how testbot is used](http://github.com/joakimk/testbot/wiki/How-testbot-is-used).

If you intend to use testbot with cloud computing (like EC2), take a look at [TestbotCloud](https://github.com/joakimk/testbot_cloud).

Installing
----

    gem install testbot

Try it out
----

    testbot --server
    testbot --runner --connect localhost
    sleep 5 # wait for the runner to register with the server

    mkdir -p testbotdemo/test; cd testbotdemo
    echo 'require "test/unit"' > test/demo_test.rb
    echo 'class DemoTest < Test::Unit::TestCase; def test_first; end; end' >> test/demo_test.rb

    testbot --test --connect localhost
        
    # Cleanup
    testbot --server stop
    testbot --runner stop
    cd ..; rm -rf testbotdemo
    rm -rf /tmp/testbot

The project files from the demo project are synced to /tmp/testbot/$USER (default). The runner syncs the files to /tmp/testbot/project (default). The tests are then run and the results returned through the server and displayed.

How it works
----

Testbot is:

{'fraction_non_alphanumeric': 0.0876068376068376, 'fraction_numerical': 0.007478632478632479, 'mean_word_length': 3.243202416918429, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 9, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1822567', 'n_tokens_mistral': 831, 'n_tokens_neox': 797, 'n_words': 362}