guard-sporkminitest 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gemspec ADDED
@@ -0,0 +1,34 @@
1
+ # encoding: utf-8
2
+ $:.unshift './lib'
3
+ require 'guard/sporkminitest/version'
4
+
5
+ Gem::Specification.new do |gem|
6
+ gem.name = 'guard-sporkminitest'
7
+ gem.version = Guard::SporkMinitest::VERSION
8
+ gem.authors = ['Yann Lugrin', '☈king']
9
+ gem.email = ['rking-guard-sporkminitest@sharpsaw.org']
10
+ gem.homepage = 'https://github.com/rking/guard-minitest'
11
+ gem.description = gem.summary = 'Guard test files for Spork-owned MiniTest'
12
+ gem.files = `git ls-files`.split($/)
13
+ gem.executables = gem.files.grep(%r{^bin/}).map{|f| File.basename f}
14
+ gem.test_files = gem.files.grep %r{^ test|spec|features/}
15
+ gem.require_path = 'lib'
16
+
17
+ # TODO doc these a bit
18
+ %w(
19
+ guard
20
+ guard-spork
21
+ spork-minitest
22
+ rb-inotify
23
+ rb-fsevent
24
+ ).each{|dep| gem.add_dependency dep }
25
+
26
+ %w(
27
+ rake
28
+ minitest
29
+ bundler
30
+ mocha
31
+ ).each{|dep| gem.add_development_dependency dep}
32
+
33
+ gem.rdoc_options = ["--charset=UTF-8", "--main=README.rdoc", "--exclude='(lib|test|spec)|(Gem|Guard|Rake)file'"]
34
+ end
data/.gitignore ADDED
@@ -0,0 +1,13 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
4
+ Gemfile.lock
5
+ /gemfiles/*.lock
6
+
7
+ ## MAC OS
8
+ .DS_Store
9
+ .Trashes
10
+ .com.apple.timemachine.supported
11
+ .fseventsd
12
+ Desktop DB
13
+ Desktop DF
data/.travis.yml ADDED
@@ -0,0 +1,22 @@
1
+ branches:
2
+ only:
3
+ - master
4
+ rvm:
5
+ - 1.8.7
6
+ - 1.9.2
7
+ - 1.9.3
8
+ # - ree
9
+ # - jruby-18mode
10
+ # - jruby-19mode
11
+ # - rbx-18mode
12
+ # - rbx-19mode
13
+ gemfile:
14
+ - gemfiles/minitest-1.7
15
+ - gemfiles/minitest-2
16
+ matrix:
17
+ exclude:
18
+ - rvm: 1.8.7
19
+ gemfile: gemfiles/minitest-2
20
+ notifications:
21
+ recipients:
22
+ - yann.lugrin@sans-savoir.net
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/Guardfile ADDED
@@ -0,0 +1,6 @@
1
+ guard 'minitest' do
2
+ watch(%r|^spec/(.*)_spec\.rb|)
3
+ watch(%r|^lib/(.*)([^/]+)\.rb|) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
4
+ watch(%r|^spec/spec_helper\.rb|) { 'spec' }
5
+ end
6
+
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2010 Yann Lugrin
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,123 @@
1
+ # TOTALLY TODO
2
+
3
+ Sorry. BBIAB.
4
+
5
+
6
+
7
+
8
+
9
+ Guard::Minitest [![Build Status](https://secure.travis-ci.org/guard/guard-minitest.png?branch=master)](http://travis-ci.org/guard/guard-minitest)
10
+ ===============
11
+
12
+ Minitest guard allows to automatically & intelligently launch tests with
13
+ [minitest framework](http://github.com/seattlerb/minitest) when files are modified.
14
+
15
+ * Compatible with MiniTest 1.7.x & 2.x
16
+ * Tested on Ruby 1.8.7, 1.9.2 & 1.9.3
17
+
18
+ Install
19
+ -------
20
+
21
+ Please be sure to have [Guard](http://github.com/guard/guard) installed before continue.
22
+
23
+ Install the gem:
24
+
25
+ ```bash
26
+ gem install guard-minitest
27
+ ```
28
+
29
+ Add it to your Gemfile (inside test group):
30
+
31
+ ```ruby
32
+ gem 'guard-minitest'
33
+ ```
34
+
35
+ Add guard definition to your Guardfile by running this command:
36
+
37
+ ```bash
38
+ guard init minitest
39
+ ```
40
+
41
+ Usage
42
+ -----
43
+
44
+ Please read [Guard usage doc](http://github.com/guard/guard#readme)
45
+
46
+ Guardfile
47
+ ---------
48
+
49
+ Minitest guard can be really adapated to all kind of projects.
50
+ Please read [guard doc](http://github.com/guard/guard#readme) for more info about Guardfile DSL.
51
+
52
+ ### Standard ruby gems with Minitest::Unit
53
+
54
+ ```ruby
55
+ guard 'minitest' do
56
+ watch(%r|^test/test_(.*)\.rb|)
57
+ watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
58
+ watch(%r|^test/test_helper\.rb|) { "test" }
59
+ end
60
+ ```
61
+
62
+ ### Standard ruby gems with Minitest::Spec
63
+
64
+ ```ruby
65
+ guard 'minitest' do
66
+ watch(%r|^spec/(.*)_spec\.rb|)
67
+ watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
68
+ watch(%r|^spec/spec_helper\.rb|) { "spec" }
69
+ end
70
+ ```
71
+
72
+ Options
73
+ -------
74
+
75
+ You can change the default location and pattern of minitest files:
76
+
77
+ ```ruby
78
+ guard 'minitest', test_folders: 'test/unit', test_file_patterns: '*_test.rb' do
79
+ # ...
80
+ end
81
+ ```
82
+
83
+ You can pass any of the standard MiniTest CLI options using the :cli option:
84
+
85
+ ```ruby
86
+ guard 'minitest', :cli => "--seed 123456 --verbose" do
87
+ # ...
88
+ end
89
+ ```
90
+
91
+ If you use [spork-testunit](https://github.com/sporkrb/spork-testunit) you can enable it with (you'll have to load it before):
92
+
93
+ ```ruby
94
+ guard 'minitest', :drb => true do
95
+ # ...
96
+ end
97
+ ```
98
+
99
+ ### List of available options:
100
+
101
+ ```ruby
102
+ :cli => '--test' # pass arbitrary Minitest CLI arguments, default: ''
103
+ :bundler => false # don't use "bundle exec" to run the minitest command, default: true
104
+ :rubygems => true # require rubygems when run the minitest command (only if bundler is disabled), default: false
105
+ :drb => true # enable DRb support, default: false
106
+ :test_folders => ['tests'] # specify an array of paths that contain test files, default: %w[test spec]
107
+ :test_file_patterns => true # specify an array of patterns that test files must match in order to be run, default: %w[*_test.rb test_*.rb *_spec.rb]
108
+ ```
109
+
110
+ Development
111
+ -----------
112
+
113
+ * Source hosted on [GitHub](http://github.com/guard/guard-minitest)
114
+ * Report issues/Questions/Feature requests on [GitHub Issues](http://github.com/guard/guard-minitest/issues)
115
+
116
+ Pull requests are very welcome! Make sure your patches are well tested. Please create a topic branch for every separate change
117
+ you make.
118
+
119
+ Authors
120
+ -------
121
+
122
+ [Yann Lugrin](http://github.com/yannlugrin)
123
+
data/Rakefile ADDED
@@ -0,0 +1,71 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'minitest/unit'
5
+
6
+ desc 'Run all tests'
7
+ task :test do
8
+ ENV['QUIET'] ||= 'true'
9
+
10
+ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/spec'))
11
+ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__)))
12
+
13
+ MiniTest::Unit.autorun
14
+
15
+ test_files = Dir['spec/**/*_spec.rb']
16
+ test_files.each { |f| require f }
17
+ end
18
+
19
+ task :default => :test
20
+
21
+ require 'rbconfig'
22
+ namespace(:test) do
23
+ if RbConfig::CONFIG['host_os'] =~ /mswin|mingw/i
24
+ desc "Run all specs on multiple ruby versions (requires pik)"
25
+ task(:portability) do
26
+ puts 'minitest can\'t be tested on MS Windows for now'
27
+ end
28
+ else
29
+ desc "Run all specs on multiple ruby versions (requires rvm)"
30
+ task(:portability) do
31
+ travis_config_file = File.expand_path("../.travis.yml", __FILE__)
32
+ begin
33
+ travis_options ||= YAML::load_file(travis_config_file)
34
+ rescue => ex
35
+ puts "Travis config file '#{travis_config_file}' could not be found: #{ex.message}"
36
+ return
37
+ end
38
+
39
+ travis_options['rvm'].each do |version|
40
+ system <<-BASH
41
+ bash -c 'source ~/.rvm/scripts/rvm;
42
+ rvm #{version};
43
+ ruby_version_string_size=`ruby -v | wc -m`
44
+ echo;
45
+ for ((c=1; c<$ruby_version_string_size+21; c++)); do echo -n "="; done
46
+ echo;
47
+ echo "minitest version 1 - `ruby -v`";
48
+ for ((c=1; c<$ruby_version_string_size+21; c++)); do echo -n "="; done
49
+ echo;
50
+ BUNDLE_GEMFILE=./gemfiles/minitest-1.7 bundle install;
51
+ BUNDLE_GEMFILE=./gemfiles/minitest-1.7 bundle exec rake test 2>&1'
52
+ BASH
53
+ if version =~ /^1\.9/
54
+ system <<-BASH
55
+ bash -c 'source ~/.rvm/scripts/rvm;
56
+ rvm #{version};
57
+ ruby_version_string_size=`ruby -v | wc -m`
58
+ echo;
59
+ for ((c=1; c<$ruby_version_string_size+21; c++)); do echo -n "="; done
60
+ echo;
61
+ echo "minitest version 2 - `ruby -v`";
62
+ for ((c=1; c<$ruby_version_string_size+21; c++)); do echo -n "="; done
63
+ echo;
64
+ BUNDLE_GEMFILE=./gemfiles/minitest-2.1 bundle install;
65
+ BUNDLE_GEMFILE=./gemfiles/minitest-2.1 bundle exec rake test 2>&1'
66
+ BASH
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,8 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'rake'
4
+ gem 'guard', '~> 1.0'
5
+ gem 'minitest', '~> 1.7.2'
6
+ gem 'bundler', '~> 1.0'
7
+ gem 'mocha', '~> 0.10'
8
+
@@ -0,0 +1,8 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'rake'
4
+ gem 'guard', '~> 1.0'
5
+ gem 'minitest', '~> 2.1'
6
+ gem 'bundler', '~> 1.0'
7
+ gem 'mocha', '~> 0.10'
8
+
@@ -0,0 +1,70 @@
1
+ # encoding: utf-8
2
+ module Guard
3
+ class SporkMinitest
4
+ class Inspector
5
+
6
+ attr_reader :test_folders, :test_file_patterns
7
+
8
+ def initialize(test_folders, test_file_patterns)
9
+ @test_folders = test_folders.uniq.compact.freeze
10
+ @test_file_patterns = test_file_patterns.uniq.compact.freeze
11
+ end
12
+
13
+ def clean_all
14
+ clean self.test_folders
15
+ end
16
+
17
+ def clean(paths)
18
+ paths = paths.uniq.compact unless paths == @test_folders
19
+ paths = paths.select { |p| test_file?(p) || test_folder?(p) }
20
+
21
+ paths.dup.each do |path|
22
+ if File.directory?(path)
23
+ paths.delete(path)
24
+ paths += test_files_for_paths([path])
25
+ end
26
+ end
27
+
28
+ paths.uniq!
29
+ paths.compact!
30
+ clear_test_files_list
31
+ paths
32
+ end
33
+
34
+ private
35
+ def test_folder_regex
36
+ @test_folder_regex ||= (
37
+ folders= self.test_folders.map {|f| Regexp.quote f}.join '|'
38
+ Regexp.new("^/?(?:#{folders})(?:/|$)")
39
+ )
40
+ end
41
+
42
+ def test_folder?(path)
43
+ path.match(test_folder_regex) && !path.match(/\..+$/) && File.directory?(path)
44
+ end
45
+
46
+ def test_file?(path)
47
+ test_files.include?(path)
48
+ end
49
+
50
+ def test_files
51
+ @test_files ||= test_files_for_paths(self.test_folders)
52
+ end
53
+
54
+ def join_for_glob(fragments)
55
+ "{#{fragments.join ','}}"
56
+ end
57
+
58
+ def test_files_for_paths(paths)
59
+ paths = join_for_glob(paths)
60
+ files = join_for_glob(self.test_file_patterns)
61
+ Dir.glob(paths + '/**/' + files)
62
+ end
63
+
64
+ def clear_test_files_list
65
+ @test_files = nil
66
+ end
67
+
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,37 @@
1
+ # encoding: utf-8
2
+ require 'guard/notifier'
3
+
4
+ module Guard
5
+ class SporkMinitestNotifier
6
+
7
+ def self.guard_message(test_count, assertion_count, failure_count, error_count, skip_count, duration)
8
+ message = "#{test_count} examples, #{assertion_count} assertions, #{failure_count} failures, #{error_count} errors"
9
+ if skip_count > 0
10
+ message << " (#{skip_count} skips)"
11
+ end
12
+ if test_count && assertion_count
13
+ message << "\nin %.6f seconds, %.4f tests/s, %.4f assertions/s." % [duration, test_count / duration, assertion_count / duration]
14
+ end
15
+ message
16
+ end
17
+
18
+ # failed | pending (skip) | success
19
+ def self.guard_image(failure_count, skip_count)
20
+ icon = if failure_count > 0
21
+ :failed
22
+ elsif skip_count > 0
23
+ :pending
24
+ else
25
+ :success
26
+ end
27
+ end
28
+
29
+ def self.notify(test_count, assertion_count, failure_count, error_count, skip_count, duration)
30
+ message = guard_message(test_count, assertion_count, failure_count, error_count, skip_count, duration)
31
+ image = guard_image(failure_count + error_count, skip_count)
32
+
33
+ ::Guard::Notifier.notify(message, :title => 'MiniTest results', :image => image)
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,108 @@
1
+ # encoding: utf-8
2
+ module Guard
3
+ class SporkMinitest
4
+ class Runner
5
+
6
+ class << self
7
+
8
+ def run(paths = [], options = {})
9
+ Runner.new(options).run(paths, options)
10
+ end
11
+
12
+ end
13
+
14
+ def initialize(options = {})
15
+ parse_deprecated_options(options)
16
+
17
+ @options = {
18
+ :bundler => File.exist?("#{Dir.pwd}/Gemfile"),
19
+ :rubygems => false,
20
+ :drb => false,
21
+ :test_folders => %w[test spec],
22
+ :test_file_patterns => %w[*_test.rb test_*.rb *_spec.rb],
23
+ :cli => ''
24
+ }.merge(options)
25
+
26
+ [:test_folders, :test_file_patterns].each do |k|
27
+ @options[k] = Array(@options[k]).uniq.compact
28
+ end
29
+ end
30
+
31
+ def run(paths, options = {})
32
+ message = options[:message] || "Running: #{paths.join(' ')}"
33
+ UI.info message, :reset => true
34
+ system(minitest_command(paths))
35
+ end
36
+
37
+ def cli_options
38
+ @options[:cli] ||= ''
39
+ end
40
+
41
+ def bundler?
42
+ @options[:bundler]
43
+ end
44
+
45
+ def rubygems?
46
+ !bundler? && @options[:rubygems]
47
+ end
48
+
49
+ def drb?
50
+ @options[:drb]
51
+ end
52
+
53
+ def test_folders
54
+ @options[:test_folders]
55
+ end
56
+
57
+ def test_file_patterns
58
+ @options[:test_file_patterns]
59
+ end
60
+
61
+ private
62
+
63
+ def minitest_command(paths)
64
+ cmd_parts = []
65
+
66
+ # Does nothing but slow things down. Please correct me if I'm wrong:
67
+ # cmd_parts << "bundle exec" if bundler?
68
+ if drb?
69
+ cmd_parts << 'testdrb'
70
+ cmd_parts += paths.map{ |path| "./#{path}" }
71
+ else
72
+ # TODO: nuke this branch
73
+ cmd_parts << 'ruby'
74
+ cmd_parts += test_folders.map{|f| %[-I"#{f}"] }
75
+ cmd_parts << '-r rubygems' if rubygems?
76
+ cmd_parts << '-r bundler/setup' if bundler?
77
+ cmd_parts += paths.map{ |path| "-r ./#{path}" }
78
+ cmd_parts << "-r #{File.expand_path('../runners/default_runner.rb', __FILE__)}"
79
+ cmd_parts << '-e \'MiniTest::Unit.autorun\''
80
+ cmd_parts << '--' << cli_options unless cli_options.empty?
81
+ end
82
+
83
+ cmd_parts.join(' ')
84
+ end
85
+
86
+ def parse_deprecated_options(options)
87
+ options[:cli] ||= ''
88
+
89
+ # TODO remove this
90
+ if options.key?(:notify)
91
+ UI.info %{DEPRECATION WARNING: The :notify option is deprecated. Guard notification configuration is used.}
92
+ end
93
+
94
+ [:seed, :verbose].each do |key|
95
+ if value = options.delete(key)
96
+ options[:cli] << " --#{key}"
97
+ if ![TrueClass, FalseClass].include?(value.class)
98
+ options[:cli] << " #{value}"
99
+ end
100
+
101
+ UI.info %{DEPRECATION WARNING: The :#{key} option is deprecated. Pass standard command line argument "--#{key}" to MiniTest with the :cli option.}
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
107
+ end
108
+
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+ require 'minitest/unit'
3
+
4
+ if MiniTest::Unit::VERSION =~ /^1/
5
+ load File.expand_path('../version_1_runner.rb', __FILE__)
6
+ else
7
+ load File.expand_path('../version_2_runner.rb', __FILE__)
8
+ end
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+ require 'minitest/unit'
3
+ require 'guard/minitest/notifier'
4
+
5
+ module MiniTest
6
+ class MiniTest::Unit
7
+
8
+ alias_method :run_without_guard, :run
9
+ def run(args = [])
10
+ start = Time.now
11
+ run_without_guard(args)
12
+ duration = Time.now - start
13
+ ::Guard::MinitestNotifier.notify(test_count, assertion_count, failures, errors, skips, duration)
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,22 @@
1
+ # encoding: utf-8
2
+ require 'minitest/unit'
3
+ require 'guard/minitest/notifier'
4
+
5
+ module MiniTest
6
+ class MiniTest::Unit
7
+
8
+ begin
9
+ alias_method :_run_anything_without_guard, :_run_anything
10
+ def _run_anything(type)
11
+ start = Time.now
12
+ _run_anything_without_guard(type)
13
+ duration = Time.now - start
14
+ ::Guard::SporkMinitestNotifier.notify(test_count, assertion_count, failures, errors, skips, duration)
15
+ end
16
+ rescue NameError
17
+ puts "*** WARN: if you use MiniTest 1, please add version option in your 'Guardfile`."
18
+ raise
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,30 @@
1
+ guard 'minitest' do
2
+ # with Minitest::Unit
3
+ watch(%r|^test/(.*)\/?test_(.*)\.rb|)
4
+ watch(%r|^lib/(.*)([^/]+)\.rb|) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
5
+ watch(%r|^test/test_helper\.rb|) { "test" }
6
+
7
+ # with Minitest::Spec
8
+ # watch(%r|^spec/(.*)_spec\.rb|)
9
+ # watch(%r|^lib/(.*)([^/]+)\.rb|) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
10
+ # watch(%r|^spec/spec_helper\.rb|) { "spec" }
11
+
12
+ # Rails 4
13
+ # watch(%r|^test/test_helper\.rb|) { "test" }
14
+ # watch(%r|^test/.+_test\.rb|)
15
+ # watch(%r|^app/(.+)\.rb|) { |m| "test/#{m[1]}_test.rb" }
16
+ # watch(%r|^app/controllers/application_controller\.rb|) { "test/controllers" }
17
+ # watch(%r|^app/controllers/(.+)_controller\.rb|) { |m| "test/integration/#{m[1]}_test.rb" }
18
+ # watch(%r|^app/views/(.+)_mailer/.+|) { |m| "test/mailers/#{m[1]}_mailer_test.rb" }
19
+ # watch(%r|^lib/(.+)\.rb|) { |m| "test/lib/#{m[1]}_test.rb" }
20
+
21
+ # Rails 3.2
22
+ # watch(%r|^app/controllers/(.*)\.rb|) { |m| "test/controllers/#{m[1]}_test.rb" }
23
+ # watch(%r|^app/helpers/(.*)\.rb|) { |m| "test/helpers/#{m[1]}_test.rb" }
24
+ # watch(%r|^app/models/(.*)\.rb|) { |m| "test/unit/#{m[1]}_test.rb" }
25
+
26
+ # Rails
27
+ # watch(%r|^app/controllers/(.*)\.rb|) { |m| "test/functional/#{m[1]}_test.rb" }
28
+ # watch(%r|^app/helpers/(.*)\.rb|) { |m| "test/helpers/#{m[1]}_test.rb" }
29
+ # watch(%r|^app/models/(.*)\.rb|) { |m| "test/unit/#{m[1]}_test.rb" }
30
+ end
@@ -0,0 +1,6 @@
1
+ # encoding: utf-8
2
+ module Guard
3
+ module SporkMinitest
4
+ VERSION = '0.0.1'
5
+ end
6
+ end
@@ -0,0 +1,42 @@
1
+ # encoding: utf-8
2
+ require 'guard'
3
+ require 'guard/guard'
4
+
5
+ module Guard
6
+ class SporkMinitest < Guard
7
+
8
+ autoload :Runner, 'guard/sporkminitest/runner'
9
+ autoload :Inspector, 'guard/sporkminitest/inspector'
10
+
11
+ def initialize(watchers = [], options = {})
12
+ super
13
+
14
+ @runner = Runner.new(options)
15
+ @inspector = Inspector.new(@runner.test_folders, @runner.test_file_patterns)
16
+ end
17
+
18
+ def start
19
+ true
20
+ end
21
+
22
+ def stop
23
+ true
24
+ end
25
+
26
+ def reload
27
+ true
28
+ end
29
+
30
+ def run_all
31
+ paths = @inspector.clean_all
32
+ return @runner.run(paths, :message => 'Running all tests') unless paths.empty?
33
+ true
34
+ end
35
+
36
+ def run_on_changes(paths = [])
37
+ paths = @inspector.clean(paths)
38
+ return @runner.run(paths) unless paths.empty?
39
+ true
40
+ end
41
+ end
42
+ end
File without changes
@@ -0,0 +1,50 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Guard::Minitest::Inspector do
5
+ subject { Guard::Minitest::Inspector.new(%w[test spec], %w[*_test.rb test_*.rb *_spec.rb]) }
6
+
7
+ describe 'clean' do
8
+
9
+ before(:each) do
10
+ @files_on_disk = ['test/guard/minitest/test_inspector.rb', 'test/guard/test_minitest.rb', 'test/guard/minitest_test.rb'].sort
11
+ end
12
+
13
+ it "should add all test files under the given dir" do
14
+ subject.clean(['test']).sort.must_equal @files_on_disk
15
+ end
16
+
17
+ it 'should remove non-test files' do
18
+ subject.clean(['test/guard/test_minitest.rb', 'bob.rb']).wont_include 'bob.rb'
19
+ end
20
+
21
+ it 'should remove non-existing test files' do
22
+ subject.clean(['test/guard/test_minitest.rb', 'test_bob.rb']).wont_include 'test_bob.rb'
23
+ end
24
+
25
+ it 'should remove non-test existing files (2)' do
26
+ subject.clean(['test/guard/minitest/test_formatter.rb']).must_equal []
27
+ end
28
+
29
+ it 'should keep test folder path' do
30
+ subject.clean(['test/guard/test_minitest.rb', 'test']).sort.must_equal @files_on_disk
31
+ end
32
+
33
+ it 'should remove duplication' do
34
+ subject.clean(['test/guard/test_minitest.rb', 'test/guard/test_minitest.rb']).must_equal ['test/guard/test_minitest.rb']
35
+ end
36
+
37
+ it 'should remove duplication (2)' do
38
+ subject.clean(['test', 'test']).sort.must_equal @files_on_disk
39
+ end
40
+
41
+ it 'should remove test folder includes in other test folder' do
42
+ subject.clean(['test/minitest', 'test']).sort.must_equal @files_on_disk
43
+ end
44
+
45
+ it 'should not include test files not in the given dir' do
46
+ subject.clean(['test/guard/minitest']).wont_include 'test/guard/minitest_test.rb'
47
+ end
48
+
49
+ end
50
+ end
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require 'guard/minitest/notifier'
4
+
5
+ describe Guard::MinitestNotifier do
6
+ subject { Guard::MinitestNotifier }
7
+
8
+ it 'should format message without skipped test' do
9
+ message = subject.guard_message(1, 2, 3, 4, 0, 10.0)
10
+ message.must_equal "1 examples, 2 assertions, 3 failures, 4 errors\nin 10.000000 seconds, 0.1000 tests/s, 0.2000 assertions/s."
11
+ end
12
+
13
+ it 'should format message with skipped test' do
14
+ message = subject.guard_message(1, 2, 3, 4, 5, 10.0)
15
+ message.must_equal "1 examples, 2 assertions, 3 failures, 4 errors (5 skips)\nin 10.000000 seconds, 0.1000 tests/s, 0.2000 assertions/s."
16
+ end
17
+
18
+ it 'should select failed image' do
19
+ subject.guard_image(1, 2).must_equal :failed
20
+ subject.guard_image(1, 0).must_equal :failed
21
+ end
22
+
23
+ it 'should select pending image' do
24
+ subject.guard_image(0, 2).must_equal :pending
25
+ end
26
+
27
+ it 'should select success image' do
28
+ subject.guard_image(0, 0).must_equal :success
29
+ end
30
+
31
+ it 'should call Guard::Notifier' do
32
+ ::Guard::Notifier.expects(:notify).with(
33
+ "1 examples, 2 assertions, 0 failures, 0 errors\nin 10.000000 seconds, 0.1000 tests/s, 0.2000 assertions/s.",
34
+ :title => 'MiniTest results',
35
+ :image => :success
36
+ )
37
+ subject.notify(1, 2, 0, 0, 0, 10.0)
38
+ end
39
+
40
+ end
@@ -0,0 +1,175 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Guard::Minitest::Runner do
5
+ subject { Guard::Minitest::Runner }
6
+
7
+ describe 'options' do
8
+
9
+ describe 'cli_options' do
10
+ it 'default should be empty string' do
11
+ subject.new.cli_options.must_equal ''
12
+ end
13
+
14
+ it 'should be set with \'cli\'' do
15
+ subject.new(:cli => '--test').cli_options.must_equal '--test'
16
+ end
17
+ end
18
+
19
+ describe 'deprecated options' do
20
+ describe 'seed' do
21
+ it 'should set cli options' do
22
+ Guard::UI.expects(:info).with('DEPRECATION WARNING: The :seed option is deprecated. Pass standard command line argument "--seed" to MiniTest with the :cli option.')
23
+ subject.new(:seed => 123456789).cli_options.must_match /--seed 123456789/
24
+ end
25
+ end
26
+
27
+ describe 'verbose' do
28
+ it 'should set cli options' do
29
+ Guard::UI.expects(:info).with('DEPRECATION WARNING: The :verbose option is deprecated. Pass standard command line argument "--verbose" to MiniTest with the :cli option.')
30
+ subject.new(:verbose => true).cli_options.must_match /--verbose/
31
+ end
32
+ end
33
+ end
34
+
35
+ describe 'bundler' do
36
+ it 'default should be true if Gemfile exist' do
37
+ Dir.stubs(:pwd).returns(fixtures_path.join('bundler'))
38
+ subject.new.bundler?.must_equal true
39
+ end
40
+
41
+ it 'default should be false if Gemfile don\'t exist' do
42
+ Dir.stubs(:pwd).returns(fixtures_path.join('empty'))
43
+ subject.new.bundler?.must_equal false
44
+ end
45
+
46
+ it 'should be forced to false' do
47
+ Dir.stubs(:pwd).returns(fixtures_path.join('bundler'))
48
+ subject.new(:bundler => false).bundler?.must_equal false
49
+ end
50
+ end
51
+
52
+ describe 'rubygems' do
53
+ it 'default should be false if Gemfile exist' do
54
+ Dir.stubs(:pwd).returns(fixtures_path.join('bundler'))
55
+ subject.new.rubygems?.must_equal false
56
+ end
57
+
58
+ it 'default should be false if Gemfile don\'t exist' do
59
+ Dir.stubs(:pwd).returns(fixtures_path.join('empty'))
60
+ subject.new.rubygems?.must_equal false
61
+ end
62
+
63
+ it 'should be set to true if bundler is disabled' do
64
+ subject.new(:bundler => false, :rubygems => true).rubygems?.must_equal true
65
+ end
66
+
67
+ it 'should not be set to true if bundler is enabled' do
68
+ subject.new(:bundler => true, :rubygems => true).rubygems?.must_equal false
69
+ end
70
+ end
71
+
72
+ describe 'drb' do
73
+ it 'default should be false' do
74
+ subject.new.drb?.must_equal false
75
+ end
76
+
77
+ it 'should be set' do
78
+ subject.new(:drb => true).drb?.must_equal true
79
+ end
80
+ end
81
+ end
82
+
83
+ describe 'run' do
84
+ before(:each) do
85
+ Dir.stubs(:pwd).returns(fixtures_path.join('empty'))
86
+ @default_runner = File.expand_path('../../../../lib/guard/minitest/runners/default_runner.rb', __FILE__)
87
+ end
88
+
89
+ it 'should run with specified seed' do
90
+ runner = subject.new(:test_folders => %w[test], :cli => '--seed 12345')
91
+ runner.expects(:system).with(
92
+ "ruby -I\"test\" -r ./test/test_minitest.rb -r #{@default_runner} -e 'MiniTest::Unit.autorun' -- --seed 12345"
93
+ )
94
+ runner.run(['test/test_minitest.rb'])
95
+ end
96
+
97
+ it 'should run in verbose mode' do
98
+ runner = subject.new(:test_folders => %w[test], :cli => '--verbose')
99
+ runner.expects(:system).with(
100
+ "ruby -I\"test\" -r ./test/test_minitest.rb -r #{@default_runner} -e 'MiniTest::Unit.autorun' -- --verbose"
101
+ )
102
+ runner.run(['test/test_minitest.rb'])
103
+ end
104
+
105
+ describe 'in empty folder' do
106
+
107
+ before(:each) do
108
+ Dir.stubs(:pwd).returns(fixtures_path.join('empty'))
109
+ end
110
+
111
+ it 'should run without bundler and rubygems' do
112
+ runner = subject.new(:test_folders => %w[test])
113
+ Guard::UI.expects(:info)
114
+ runner.expects(:system).with(
115
+ "ruby -I\"test\" -r ./test/test_minitest.rb -r #{@default_runner} -e 'MiniTest::Unit.autorun'"
116
+ )
117
+ runner.run(['test/test_minitest.rb'])
118
+ end
119
+
120
+ it 'should run without bundler but rubygems' do
121
+ runner = subject.new(:test_folders => %w[test], :rubygems => true)
122
+ Guard::UI.expects(:info)
123
+ runner.expects(:system).with(
124
+ "ruby -I\"test\" -r rubygems -r ./test/test_minitest.rb -r #{@default_runner} -e 'MiniTest::Unit.autorun'"
125
+ )
126
+ runner.run(['test/test_minitest.rb'])
127
+ end
128
+
129
+ end
130
+
131
+ describe 'in bundler folder' do
132
+ before(:each) do
133
+ Dir.stubs(:pwd).returns(fixtures_path.join('bundler'))
134
+ end
135
+
136
+ it 'should run with bundler but not rubygems' do
137
+ runner = subject.new(:test_folders => %w[test], :bundler => true, :rubygems => false)
138
+ Guard::UI.expects(:info)
139
+ runner.expects(:system).with(
140
+ "bundle exec ruby -I\"test\" -r bundler/setup -r ./test/test_minitest.rb -r #{@default_runner} -e 'MiniTest::Unit.autorun'"
141
+ )
142
+ runner.run(['test/test_minitest.rb'])
143
+ end
144
+
145
+ it 'should run without bundler but rubygems' do
146
+ runner = subject.new(:test_folders => %w[test], :bundler => false, :rubygems => true)
147
+ Guard::UI.expects(:info)
148
+ runner.expects(:system).with(
149
+ "ruby -I\"test\" -r rubygems -r ./test/test_minitest.rb -r #{@default_runner} -e 'MiniTest::Unit.autorun'"
150
+ )
151
+ runner.run(['test/test_minitest.rb'], :bundler => false, :rubygems => true)
152
+ end
153
+
154
+ it 'should run without bundler and rubygems' do
155
+ runner = subject.new(:test_folders => %w[test], :bundler => false, :rubygems => false)
156
+ Guard::UI.expects(:info)
157
+ runner.expects(:system).with(
158
+ "ruby -I\"test\" -r ./test/test_minitest.rb -r #{@default_runner} -e 'MiniTest::Unit.autorun'"
159
+ )
160
+ runner.run(['test/test_minitest.rb'], :bundler => false, :rubygems => false)
161
+ end
162
+
163
+ end
164
+
165
+ describe 'drb' do
166
+ it 'should run with drb' do
167
+ runner = subject.new(:test_folders => %w[test], :drb => true)
168
+ Guard::UI.expects(:info)
169
+ runner.expects(:system).with('testdrb ./test/test_minitest.rb')
170
+ runner.run(['test/test_minitest.rb'], :drb => true)
171
+ end
172
+
173
+ end
174
+ end
175
+ end
@@ -0,0 +1,78 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Guard::Minitest do
5
+ subject { Guard::Minitest }
6
+
7
+ let(:runner) { stub('runner', :test_folders => [], :test_file_patterns => []) }
8
+ let(:inspector) { stub('inspector') }
9
+ let(:guard) { subject.new }
10
+
11
+ before(:each) do
12
+ Guard::Minitest::Runner.stubs(:new).returns(runner)
13
+ Guard::Minitest::Inspector.stubs(:new).returns(inspector)
14
+ end
15
+
16
+ after(:each) do
17
+ Guard::Minitest::Runner.unstub(:new)
18
+ Guard::Minitest::Inspector.unstub(:new)
19
+ end
20
+
21
+ describe 'initialization' do
22
+
23
+ it 'should initialize runner with options' do
24
+ Guard::Minitest::Runner.expects(:new).with({}).returns(runner)
25
+ subject.new
26
+ end
27
+
28
+ it 'should initialize inspector with options' do
29
+ Guard::Minitest::Inspector.expects(:new).with(runner.test_folders, runner.test_file_patterns).returns(inspector)
30
+ subject.new
31
+ end
32
+
33
+ end
34
+
35
+ describe 'start' do
36
+
37
+ it 'should return true' do
38
+ guard.start.must_equal true
39
+ end
40
+
41
+ end
42
+
43
+ describe 'stop' do
44
+
45
+ it 'should return true' do
46
+ guard.stop.must_equal true
47
+ end
48
+
49
+ end
50
+
51
+ describe 'reload' do
52
+
53
+ it 'should return true' do
54
+ guard.reload.must_equal true
55
+ end
56
+
57
+ end
58
+
59
+ describe 'run_all' do
60
+
61
+ it 'should run all tests' do
62
+ inspector.stubs(:clean_all).returns(['test/guard/minitest/test_inspector.rb', 'test/guard/test_minitest.rb'])
63
+ runner.expects(:run).with(['test/guard/minitest/test_inspector.rb', 'test/guard/test_minitest.rb'], {:message => 'Running all tests'}).returns(true)
64
+ guard.run_all.must_equal true
65
+ end
66
+
67
+ end
68
+
69
+ describe 'run_on_changes' do
70
+
71
+ it 'should run minitest in paths' do
72
+ inspector.stubs(:clean).with(['test/guard/minitest/test_inspector.rb']).returns(['test/guard/minitest/test_inspector.rb'])
73
+ runner.expects(:run).with(['test/guard/minitest/test_inspector.rb']).returns(true)
74
+ guard.run_on_changes(['test/guard/minitest/test_inspector.rb']).must_equal true
75
+ end
76
+
77
+ end
78
+ end
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+ require 'minitest/spec'
3
+ require 'mocha/setup'
4
+
5
+ require 'guard/minitest'
6
+
7
+ class MiniTest::Spec < MiniTest::Unit::TestCase
8
+
9
+ before(:each) do
10
+ ENV['GUARD_ENV'] = 'test'
11
+ @real_minitest_version = MiniTest::Unit::VERSION.dup
12
+ end
13
+
14
+ after(:each) do
15
+ ENV['GUARD_ENV'] = nil
16
+ @_memoized = nil
17
+
18
+ if MiniTest::Unit.const_defined?(:VERSION)
19
+ MiniTest::Unit::VERSION.replace(@real_minitest_version)
20
+ else
21
+ MiniTest::Unit.send(:const_set, :VERSION, @real_minitest_version)
22
+ end
23
+ end
24
+
25
+ def self.let(name, &block)
26
+ define_method name do
27
+ @_memoized ||= {}
28
+ @_memoized.fetch(name) { |k| @_memoized[k] = instance_eval(&block) }
29
+ end
30
+ end
31
+
32
+ def self.subject(&block)
33
+ let :subject, &block
34
+ end
35
+
36
+ def fixtures_path
37
+ @fixtures_path ||= Pathname.new(File.expand_path('../fixtures/', __FILE__))
38
+ end
39
+
40
+ end
File without changes
File without changes
File without changes
metadata ADDED
@@ -0,0 +1,231 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: guard-sporkminitest
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Yann Lugrin
9
+ - ☈king
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2012-12-27 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: guard
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: guard-spork
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: spork-minitest
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: rb-inotify
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ type: :runtime
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ - !ruby/object:Gem::Dependency
80
+ name: rb-fsevent
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ type: :runtime
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: rake
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: minitest
113
+ requirement: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ - !ruby/object:Gem::Dependency
128
+ name: bundler
129
+ requirement: !ruby/object:Gem::Requirement
130
+ none: false
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ type: :development
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ - !ruby/object:Gem::Dependency
144
+ name: mocha
145
+ requirement: !ruby/object:Gem::Requirement
146
+ none: false
147
+ requirements:
148
+ - - ! '>='
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ type: :development
152
+ prerelease: false
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ! '>='
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ description: Guard test files for Spork-owned MiniTest
160
+ email:
161
+ - rking-guard-sporkminitest@sharpsaw.org
162
+ executables: []
163
+ extensions: []
164
+ extra_rdoc_files: []
165
+ files:
166
+ - .gemspec
167
+ - .gitignore
168
+ - .travis.yml
169
+ - Gemfile
170
+ - Guardfile
171
+ - LICENSE
172
+ - README.md
173
+ - Rakefile
174
+ - gemfiles/minitest-1.7
175
+ - gemfiles/minitest-2
176
+ - lib/guard/sporkminitest.rb
177
+ - lib/guard/sporkminitest/inspector.rb
178
+ - lib/guard/sporkminitest/notifier.rb
179
+ - lib/guard/sporkminitest/runner.rb
180
+ - lib/guard/sporkminitest/runners/default_runner.rb
181
+ - lib/guard/sporkminitest/runners/version_1_runner.rb
182
+ - lib/guard/sporkminitest/runners/version_2_runner.rb
183
+ - lib/guard/sporkminitest/templates/Guardfile
184
+ - lib/guard/sporkminitest/version.rb
185
+ - spec/fixtures/bundler/Gemfile
186
+ - spec/guard/minitest/inspector_spec.rb
187
+ - spec/guard/minitest/notifier_spec.rb
188
+ - spec/guard/minitest/runner_spec.rb
189
+ - spec/guard/minitest_spec.rb
190
+ - spec/spec_helper.rb
191
+ - test/guard/minitest/test_inspector.rb
192
+ - test/guard/minitest_test.rb
193
+ - test/guard/test_minitest.rb
194
+ homepage: https://github.com/rking/guard-minitest
195
+ licenses: []
196
+ post_install_message:
197
+ rdoc_options:
198
+ - --charset=UTF-8
199
+ - --main=README.rdoc
200
+ - --exclude='(lib|test|spec)|(Gem|Guard|Rake)file'
201
+ require_paths:
202
+ - lib
203
+ required_ruby_version: !ruby/object:Gem::Requirement
204
+ none: false
205
+ requirements:
206
+ - - ! '>='
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ required_rubygems_version: !ruby/object:Gem::Requirement
210
+ none: false
211
+ requirements:
212
+ - - ! '>='
213
+ - !ruby/object:Gem::Version
214
+ version: '0'
215
+ requirements: []
216
+ rubyforge_project:
217
+ rubygems_version: 1.8.24
218
+ signing_key:
219
+ specification_version: 3
220
+ summary: Guard test files for Spork-owned MiniTest
221
+ test_files:
222
+ - .gemspec
223
+ - lib/guard/sporkminitest/inspector.rb
224
+ - spec/fixtures/bundler/Gemfile
225
+ - spec/guard/minitest/inspector_spec.rb
226
+ - spec/guard/minitest/notifier_spec.rb
227
+ - spec/guard/minitest/runner_spec.rb
228
+ - spec/guard/minitest_spec.rb
229
+ - spec/spec_helper.rb
230
+ - test/guard/minitest/test_inspector.rb
231
+ has_rdoc: