Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

129 lines (87 sloc) 4.506 kb

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.
  • 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.

By default, guard-test will only look for test files within test/ in your project root. You can add any paths using the :test_paths option:

guard 'test', :test_paths => ['test', 'vendor/plugins/recaptcha/test', 'any/path/test'] do
  # ...
end

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
:test_paths     => ['spec']           # specify an array of paths that contain test files

Development

Pull requests are very welcome! Please try to follow these simple "rules", though:

  • Please create a topic branch for every separate change you make;
  • Make sure your patches are well tested;
  • Update the README (if applicable);
  • Update the CHANGELOG (maybe not for a typo but don't hesitate!);
  • Please do not change the version number.

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.

Jump to Line
Something went wrong with that request. Please try again.