Project

guard-tap

0.01
No commit activity in last 3 years
No release in over 3 years
Guard::Tap automatically run your tests using TAP(Test Anything Protocol).
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.3
>= 0
>= 0

Runtime

>= 1.8
 Project Readme

Guard::Tap Build Status

RSpec guard allows to automatically run TAP based test suites and print a report.

Installation

The simplest way to install Guard is to use Bundler. Please make sure to have Guard installed.

Add Guard::Tap to your Gemfile:

group :development do
  gem 'guard-tap'
end

Add the default Guard::Tap template to your Guardfile by running:

$ guard init tap

Usage

Please read Guard usage doc.

Guardfile

RSpec guard can be adapted to all kinds of projects.

Standard Perl project

guard :tap, command: 'perl' do
  watch %r{^t/.*\.t$}
end

Detect the test files

You can watch lib/ and detect the test file for the changed class.

guard :tap, command: 'perl' do
  watch %r{^t/.*\.t$}
  watch %r{^(lib/.*\.pm)$} do |m|
    modified_file = m[0]

    all_test_files = Dir.glob('t/**/**.t')

    all_test_files.sort_by{ |test_file|
      # sort by similarity of path
      a = test_file
      b = modified_file
      delimiter = %r{[/_\-\.]}
      a_fragments = a.split(delimiter)
      b_fragments = b.split(delimiter)
      (a_fragments + b_fragments).uniq.length.to_f / (a_fragments + b_fragments).length.to_f
    }.first
  end
end

Options

You can pass the command to execute test file using the :command option: By default, Guard::Tap just execute the file.

If you are using carton, set carton exec -- perl to command.

guard :tap, command: 'carton exec -- perl' do
  watch %r{^t/.*\.t$}
end

Notification

Guard::Tap parses TAP output and notifify error messages when the tests are failed.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

See also