guard-minitest 0.4.0 → 0.5.0.rc1

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/README.rdoc CHANGED
@@ -1,5 +1,7 @@
1
1
  = Guard::Minitest
2
2
 
3
+ {<img src="https://secure.travis-ci.org/guard/guard-minitest.png" />}[http://travis-ci.org/guard/guard-minitest]
4
+
3
5
  Minitest guard allows to automatically & intelligently launch tests with
4
6
  {minitest framework}[http://github.com/seattlerb/minitest] when files are modified.
5
7
 
@@ -35,7 +37,7 @@ Please read {guard doc}[http://github.com/guard/guard#readme] for more info abou
35
37
 
36
38
  guard 'minitest' do
37
39
  watch(%r|^test/test_(.*)\.rb|)
38
- watch(%r|^lib/(.*)([^/]+)\.rb|) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
40
+ watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
39
41
  watch(%r|^test/test_helper\.rb|) { "test" }
40
42
  end
41
43
 
@@ -43,7 +45,7 @@ Please read {guard doc}[http://github.com/guard/guard#readme] for more info abou
43
45
 
44
46
  guard 'minitest' do
45
47
  watch(%r|^spec/(.*)_spec\.rb|)
46
- watch(%r|^lib/(.*)\.rb|) { |m| "spec/#{m[1]}_spec.rb" }
48
+ watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
47
49
  watch(%r|^spec/spec_helper\.rb|) { "spec" }
48
50
  end
49
51
 
@@ -61,6 +63,12 @@ You can set minitest verbose mode with:
61
63
  ...
62
64
  end
63
65
 
66
+ You can change the default location and pattern of minitest files:
67
+
68
+ guard 'minitest', test_folders: 'test/unit', test_file_patterns: '*_test.rb' do
69
+ ...
70
+ end
71
+
64
72
  You can disable desktop notification with:
65
73
 
66
74
  guard 'minitest', :notify => false do
@@ -12,6 +12,7 @@ module Guard
12
12
  super
13
13
 
14
14
  @runner ||= Runner.new(options)
15
+ @inspector= Inspector.new(@runner.test_folders, @runner.test_file_patterns)
15
16
  end
16
17
 
17
18
  def start
@@ -27,13 +28,13 @@ module Guard
27
28
  end
28
29
 
29
30
  def run_all
30
- paths = Inspector.clean(['test', 'spec'])
31
+ paths = @inspector.clean_all
31
32
  return @runner.run(paths, :message => 'Running all tests') unless paths.empty?
32
33
  true
33
34
  end
34
35
 
35
36
  def run_on_change(paths = [])
36
- paths = Inspector.clean(paths)
37
+ paths = @inspector.clean(paths)
37
38
  return @runner.run(paths) unless paths.empty?
38
39
  true
39
40
  end
@@ -1,46 +1,70 @@
1
1
  # encoding: utf-8
2
2
  module Guard
3
3
  class Minitest
4
- module Inspector
5
- class << self
6
-
7
- def clean(paths)
8
- paths.uniq!
9
- paths.compact!
10
- paths = paths.select { |p| test_file?(p) || test_folder?(p) }
11
-
12
- paths.dup.each do |path|
13
- if File.directory?(path)
14
- paths.delete(path)
15
- paths += Dir.glob("#{path}/**/test_*.rb") + Dir.glob('test/**/*_test.rb') + Dir.glob("#{path}/**/*_spec.rb")
16
- end
17
- end
4
+ class Inspector
18
5
 
19
- paths.uniq!
20
- paths.compact!
21
- clear_test_files_list
22
- paths
23
- end
6
+ attr_reader :test_folders, :test_file_patterns
24
7
 
25
- private
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
26
12
 
27
- def test_folder?(path)
28
- path.match(/^\/?(test|spec)/) && !path.match(/\..+$/) && File.directory?(path)
29
- end
13
+ def clean_all
14
+ clean self.test_folders
15
+ end
30
16
 
31
- def test_file?(path)
32
- test_files.include?(path)
33
- end
17
+ def clean(paths)
18
+ paths = paths.uniq.compact unless paths == @test_folders
19
+ paths = paths.select { |p| test_file?(p) || test_folder?(p) }
34
20
 
35
- def test_files
36
- @test_files ||= Dir.glob('test/**/test_*.rb') + Dir.glob('test/**/*_test.rb') + Dir.glob('{test,spec}/**/*_spec.rb')
21
+ paths.dup.each do |path|
22
+ if File.directory?(path)
23
+ paths.delete(path)
24
+ paths += test_files_for_pathes([path])
25
+ end
37
26
  end
38
27
 
39
- def clear_test_files_list
40
- @test_files = nil
41
- end
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
42
41
 
42
+ def test_folder?(path)
43
+ path.match(test_folder_regex) && !path.match(/\..+$/) && File.directory?(path)
43
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_pathes(self.test_folders)
52
+ end
53
+
54
+ def join_for_glob(fragments)
55
+ "{#{fragments.join ','}}"
56
+ end
57
+
58
+ def test_files_for_pathes(pathes)
59
+ pathes= join_for_glob(pathes)
60
+ files= join_for_glob(self.test_file_patterns)
61
+ Dir.glob(pathes + '/**/' + files)
62
+ end
63
+
64
+ def clear_test_files_list
65
+ @test_files = nil
66
+ end
67
+
44
68
  end
45
69
  end
46
- end
70
+ end
@@ -17,8 +17,12 @@ module Guard
17
17
  :notify => true,
18
18
  :bundler => File.exist?("#{Dir.pwd}/Gemfile"),
19
19
  :rubygems => false,
20
- :drb => false
20
+ :drb => false,
21
+ :test_folders => %w[test spec],
22
+ :test_file_patterns => %w[*_test.rb test_*.rb *_spec.rb],
21
23
  }.merge(options)
24
+ [:test_folders,:test_file_patterns].each {|k| (@options[k]= [@options[k]].flatten.uniq.compact).freeze}
25
+ options= options.freeze
22
26
  end
23
27
 
24
28
  def run(paths, options = {})
@@ -51,6 +55,14 @@ module Guard
51
55
  @options[:drb]
52
56
  end
53
57
 
58
+ def test_folders
59
+ @options[:test_folders]
60
+ end
61
+
62
+ def test_file_patterns
63
+ @options[:test_file_patterns]
64
+ end
65
+
54
66
  private
55
67
 
56
68
  def minitest_command(paths)
@@ -58,13 +70,22 @@ module Guard
58
70
  cmd_parts << "bundle exec" if bundler?
59
71
  if drb?
60
72
  cmd_parts << 'testdrb'
61
- cmd_parts << 'test/test_helper.rb' if File.exist?('test/test_helper.rb')
62
- cmd_parts << 'spec/spec_helper.rb' if File.exist?('spec/spec_helper.rb')
73
+ cmd_parts << "-r #{File.expand_path('../runners/default_runner.rb', __FILE__)}"
74
+ if notify?
75
+ cmd_parts << '-e \'::GUARD_NOTIFY=true\''
76
+ else
77
+ cmd_parts << '-e \'::GUARD_NOTIFY=false\''
78
+ end
79
+ test_folders.each do |f|
80
+ cmd_parts << "#{f}/test_helper.rb" if File.exist?("#{f}/test_helper.rb")
81
+ cmd_parts << "#{f}/spec_helper.rb" if File.exist?("#{f}/spec_helper.rb")
82
+ end
63
83
  paths.each do |path|
64
84
  cmd_parts << "./#{path}"
65
85
  end
66
86
  else
67
- cmd_parts << 'ruby -Itest -Ispec'
87
+ cmd_parts << 'ruby'
88
+ cmd_parts.concat test_folders.map{|f| %[-I"#{f}"]}
68
89
  cmd_parts << '-r rubygems' if rubygems?
69
90
  cmd_parts << '-r bundler/setup' if bundler?
70
91
  paths.each do |path|
@@ -80,7 +101,9 @@ module Guard
80
101
  cmd_parts << "--seed #{seed}" unless seed.nil?
81
102
  cmd_parts << '--verbose' if verbose?
82
103
  end
83
- cmd_parts.join(' ')
104
+ cmd= cmd_parts.join(' ')
105
+ puts "Running: #{cmd}\n\n" if verbose?
106
+ cmd
84
107
  end
85
108
 
86
109
  end
@@ -10,7 +10,7 @@ module MiniTest
10
10
  start = Time.now
11
11
  run_without_guard(args)
12
12
  duration = Time.now - start
13
- Guard::MinitestNotifier.notify(test_count, assertion_count, failures, errors, skips, duration) if GUARD_NOTIFY
13
+ ::Guard::MinitestNotifier.notify(test_count, assertion_count, failures, errors, skips, duration) if GUARD_NOTIFY
14
14
  end
15
15
 
16
16
  end
@@ -11,7 +11,7 @@ module MiniTest
11
11
  start = Time.now
12
12
  _run_anything_without_guard(type)
13
13
  duration = Time.now - start
14
- Guard::MinitestNotifier.notify(test_count, assertion_count, failures, errors, skips, duration) if GUARD_NOTIFY
14
+ ::Guard::MinitestNotifier.notify(test_count, assertion_count, failures, errors, skips, duration) if GUARD_NOTIFY
15
15
  end
16
16
  rescue NameError
17
17
  puts "*** WARN: if you use MiniTest 1, please add version option in your 'Guardfile`."
@@ -1,11 +1,15 @@
1
1
  guard 'minitest' do
2
2
  # with Minitest::Unit
3
- watch(%r|^test/test_(.*)\.rb|)
3
+ watch(%r|^test/(.*)\/?test_(.*)\.rb|)
4
4
  watch(%r|^lib/(.*)([^/]+)\.rb|) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
5
5
  watch(%r|^test/test_helper\.rb|) { "test" }
6
6
 
7
7
  # with Minitest::Spec
8
8
  # watch(%r|^spec/(.*)_spec\.rb|)
9
- # watch(%r|^lib/(.*)\.rb|) { |m| "spec/#{m[1]}_spec.rb" }
9
+ # watch(%r|^lib/(.*)([^/]+)\.rb|) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
10
10
  # watch(%r|^spec/spec_helper\.rb|) { "spec" }
11
+
12
+ # Rails
13
+ # watch(%r|^app/controllers/(.*)\.rb|) { |m| "test/functional/#{m[1]}_test.rb" }
14
+ # watch(%r|^app/models/(.*)\.rb|) { |m| "test/unit/#{m[1]}_test.rb" }
11
15
  end
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  module Guard
3
3
  module MinitestVersion
4
- VERSION = '0.4.0'
4
+ VERSION = '0.5.0.rc1'
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,112 +1,107 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: guard-minitest
3
- version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.4.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0.rc1
5
+ prerelease: 6
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Yann Lugrin
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-06-15 00:00:00 +02:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
12
+ date: 2012-02-21 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
17
15
  name: guard
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70142535118700 !ruby/object:Gem::Requirement
20
17
  none: false
21
- requirements:
18
+ requirements:
22
19
  - - ~>
23
- - !ruby/object:Gem::Version
24
- version: "0.4"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.0'
25
22
  type: :runtime
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
28
- name: minitest
29
23
  prerelease: false
30
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70142535118700
25
+ - !ruby/object:Gem::Dependency
26
+ name: minitest
27
+ requirement: &70142535117960 !ruby/object:Gem::Requirement
31
28
  none: false
32
- requirements:
33
- - - ">="
34
- - !ruby/object:Gem::Version
35
- version: 2.0.0
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 2.1.0
36
33
  type: :development
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
39
- name: bundler
40
34
  prerelease: false
41
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70142535117960
36
+ - !ruby/object:Gem::Dependency
37
+ name: bundler
38
+ requirement: &70142535117260 !ruby/object:Gem::Requirement
42
39
  none: false
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
46
43
  version: 1.0.2
47
44
  type: :development
48
- version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
50
- name: mocha
51
45
  prerelease: false
52
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *70142535117260
47
+ - !ruby/object:Gem::Dependency
48
+ name: mocha
49
+ requirement: &70142535116720 !ruby/object:Gem::Requirement
53
50
  none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
57
54
  version: 0.9.8
58
55
  type: :development
59
- version_requirements: *id004
60
- description: Guard::Minitest automatically run your tests with MiniTest framework (much like autotest)
61
- email:
56
+ prerelease: false
57
+ version_requirements: *70142535116720
58
+ description: Guard::Minitest automatically run your tests with MiniTest framework
59
+ (much like autotest)
60
+ email:
62
61
  - yann.lugrin@sans-savoir.net
63
62
  executables: []
64
-
65
63
  extensions: []
66
-
67
64
  extra_rdoc_files: []
68
-
69
- files:
70
- - lib/guard/minitest/runners/version_1_runner.rb
71
- - lib/guard/minitest/runners/version_2_runner.rb
72
- - lib/guard/minitest/runners/default_runner.rb
65
+ files:
73
66
  - lib/guard/minitest/inspector.rb
74
- - lib/guard/minitest/templates/Guardfile
75
67
  - lib/guard/minitest/notifier.rb
76
68
  - lib/guard/minitest/runner.rb
69
+ - lib/guard/minitest/runners/default_runner.rb
70
+ - lib/guard/minitest/runners/version_1_runner.rb
71
+ - lib/guard/minitest/runners/version_2_runner.rb
72
+ - lib/guard/minitest/templates/Guardfile
77
73
  - lib/guard/minitest/version.rb
78
74
  - lib/guard/minitest.rb
79
75
  - LICENSE
80
76
  - README.rdoc
81
- has_rdoc: true
82
77
  homepage: http://rubygems.org/gems/guard-minitest
83
78
  licenses: []
84
-
85
79
  post_install_message:
86
- rdoc_options:
80
+ rdoc_options:
87
81
  - --charset=UTF-8
88
82
  - --main=README.rdoc
89
83
  - --exclude='(lib|test|spec)|(Gem|Guard|Rake)file'
90
- require_paths:
84
+ require_paths:
91
85
  - lib
92
- required_ruby_version: !ruby/object:Gem::Requirement
86
+ required_ruby_version: !ruby/object:Gem::Requirement
93
87
  none: false
94
- requirements:
95
- - - ">="
96
- - !ruby/object:Gem::Version
97
- version: "0"
98
- required_rubygems_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ! '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ segments:
93
+ - 0
94
+ hash: -417848504522317774
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
99
96
  none: false
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
103
100
  version: 1.3.6
104
101
  requirements: []
105
-
106
102
  rubyforge_project: guard-minitest
107
- rubygems_version: 1.6.2
103
+ rubygems_version: 1.8.10
108
104
  signing_key:
109
105
  specification_version: 3
110
106
  summary: Guard gem for MiniTest framework
111
107
  test_files: []
112
-