Guard::Test automatically run your tests (much like autotest)
Ruby
Pull request Compare This branch is 7 commits ahead, 174 commits behind guard:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib/guard
spec
test
.gitignore
.travis.yml
CHANGELOG.md
Gemfile
Guardfile
LICENSE
README.md
Rakefile
guard-test.gemspec

README.md

Guard::Test Build Status

Test::Unit guard allows to automatically & intelligently launch tests when files are modified or created.

If you have any questions about Guard or Guard::Test, please join us on our Google group or on #guard (irc.freenode.net).

Features

  • Compatible with Test::Unit >= 2.2 and Minitest (Ruby 1.9).
  • Tested on Ruby 1.8.7, 1.9.2, REE, Rubinius and JRuby.

Install

Please be sure to have Guard installed before continue.

If you're using Bundler, add it to your Gemfile (inside the development group):

gem 'guard-test'

and run:

$ bundle install

or manually install the gem:

$ gem install guard-test

Add Guard definition to your Guardfile by running this command:

$ guard init test

Usage

Please read Guard usage doc.

Guardfile

Guard::Test can be adapted to any kind of projects.

Standard Ruby project

guard 'test' do
  watch(%r{^lib/(.+)\.rb$})     { |m| "test/#{m[1]}_test.rb" }
  watch(%r{^test/.+_test\.rb$})
  watch('test/test_helper.rb')  { "test" }
end

Ruby On Rails project

guard 'test' do
  watch(%r{^app/models/(.+)\.rb$})                   { |m| "test/unit/#{m[1]}_test.rb" }
  watch(%r{^app/controllers/(.+)\.rb$})              { |m| "test/functional/#{m[1]}_test.rb" }
  watch(%r{^app/views/.+\.rb$})                      { "test/integration" }
  watch(%r{^lib/(.+)\.rb$})                          { |m| "test/#{m[1]}_test.rb" }
  watch(%r{^test/.+_test.rb$})
  watch('app/controllers/application_controller.rb') { ["test/functional", "test/integration"] }
  watch('test/test_helper.rb')                       { "test" }
end

Please read the Guard documentation for more info about the Guardfile DSL.

Options

Guard::Test allows you to choose between two different runners (Guard::Test's runners are inherited from Test::Unit's console runner):

  • default: Display tests results as they happen, with different chars (green . for pass, red F for fail, purple E for error) and print failures/errors messages & backtraces when all the tests are finished. Obviously, this is the guard-test default.
  • fastfail: Display tests results as they happen and print failures/errors messages & backtraces immediately.

Available options:

:rvm            => ['1.8.7', '1.9.2'] # directly run your specs on multiple Rubies, default: nil
:bundler        => false              # don't use "bundle exec" to run the test command, default: true if a you have a Gemfile
:runner         => 'fastfail'         # default: 'default'
:cli            => "-v"               # pass arbitrary CLI arguments to the Ruby command that runs the tests, default: nil
:all_on_start   => false              # don't run all the tests at startup, default: true
:all_after_pass => false              # don't run all tests after changed tests pass, default: true
:keep_failed    => false              # keep failed tests until them pass, default: true

Development

Pull requests are very welcome! Make sure your patches are well tested. Please create a topic branch for every separate change you make. Please do not change the version in your pull-request.

For questions please join us on our Google group or on #guard (irc.freenode.net).

Author

Rémy Coutable

Contributors

https://github.com/guard/guard-test/contributors

Kudos

Many thanks to Thibaud Guillaume-Gentil for creating the excellent Guard gem.