guard-minitest 2.4.1 → 2.4.2
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.
- checksums.yaml +4 -4
- data/lib/guard/minitest.rb +0 -2
- data/lib/guard/minitest.rb.orig +56 -0
- data/lib/guard/minitest/inspector.rb +0 -2
- data/lib/guard/minitest/inspector.rb.orig +54 -0
- data/lib/guard/minitest/notifier.rb +1 -5
- data/lib/guard/minitest/notifier.rb.orig +39 -0
- data/lib/guard/minitest/reporter.rb +3 -5
- data/lib/guard/minitest/reporter.rb.orig +18 -0
- data/lib/guard/minitest/reporters/old_reporter.rb +1 -3
- data/lib/guard/minitest/reporters/old_reporter.rb.orig +22 -0
- data/lib/guard/minitest/runner.rb +47 -50
- data/lib/guard/minitest/runner.rb.orig +252 -0
- data/lib/guard/minitest/runners/old_runner.rb +0 -2
- data/lib/guard/minitest/utils.rb +0 -2
- data/lib/guard/minitest/utils.rb.orig +28 -0
- data/lib/guard/minitest/version.rb +1 -1
- data/lib/guard/minitest/version.rb.orig +7 -0
- data/lib/minitest/guard_minitest_plugin.rb +3 -3
- metadata +11 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 851b5a2bd445b0f83efeb90aba66ae605c46ace2
|
4
|
+
data.tar.gz: 698e015c7ad9cafe7adad2e79814423e79d7f150
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7137097036674b50c4956161ab6092c55077ff1b4852fb00932720890e825182c0f0fa8782a0fabfa181cf37c3cc3804a39b742a76fcad87cfe7a29905d8b2c0
|
7
|
+
data.tar.gz: 5f9cda4bb17dbcbad72e265bdbb837890df27e0acd4c33e930356ac8a35be7c8bce416feff722487128e537f3d726ee637928d0c3b5721673bee8630d6bfc6fa
|
data/lib/guard/minitest.rb
CHANGED
@@ -2,7 +2,6 @@ require 'guard/compat/plugin'
|
|
2
2
|
|
3
3
|
module Guard
|
4
4
|
class Minitest < Plugin
|
5
|
-
|
6
5
|
require 'guard/minitest/runner'
|
7
6
|
require 'guard/minitest/utils'
|
8
7
|
require 'guard/minitest/version'
|
@@ -51,6 +50,5 @@ module Guard
|
|
51
50
|
def throw_on_failed_tests
|
52
51
|
throw :task_has_failed unless yield
|
53
52
|
end
|
54
|
-
|
55
53
|
end
|
56
54
|
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'guard/compat/plugin'
|
2
|
+
|
3
|
+
module Guard
|
4
|
+
class Minitest < Plugin
|
5
|
+
|
6
|
+
require 'guard/minitest/runner'
|
7
|
+
require 'guard/minitest/utils'
|
8
|
+
require 'guard/minitest/version'
|
9
|
+
|
10
|
+
attr_accessor :runner
|
11
|
+
|
12
|
+
def initialize(options = {})
|
13
|
+
super
|
14
|
+
@options = {
|
15
|
+
all_on_start: true
|
16
|
+
}.merge(options)
|
17
|
+
@runner = Runner.new(@options)
|
18
|
+
end
|
19
|
+
|
20
|
+
def start
|
21
|
+
UI.info "Guard::Minitest #{MinitestVersion::VERSION} is running, with Minitest::Unit #{Utils.minitest_version}!"
|
22
|
+
run_all if @options[:all_on_start]
|
23
|
+
end
|
24
|
+
|
25
|
+
def stop
|
26
|
+
true
|
27
|
+
end
|
28
|
+
|
29
|
+
def reload
|
30
|
+
true
|
31
|
+
end
|
32
|
+
|
33
|
+
def run_all
|
34
|
+
throw_on_failed_tests { runner.run_all }
|
35
|
+
end
|
36
|
+
|
37
|
+
def run_on_modifications(paths = [])
|
38
|
+
throw_on_failed_tests { runner.run_on_modifications(paths) }
|
39
|
+
end
|
40
|
+
|
41
|
+
def run_on_additions(paths)
|
42
|
+
runner.run_on_additions(paths)
|
43
|
+
end
|
44
|
+
|
45
|
+
def run_on_removals(paths)
|
46
|
+
runner.run_on_removals(paths)
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def throw_on_failed_tests
|
52
|
+
throw :task_has_failed unless yield
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
@@ -3,7 +3,6 @@ require 'guard/minitest'
|
|
3
3
|
module Guard
|
4
4
|
class Minitest < Plugin
|
5
5
|
class Inspector
|
6
|
-
|
7
6
|
attr_reader :test_folders, :test_file_patterns
|
8
7
|
|
9
8
|
def initialize(test_folders, test_file_patterns)
|
@@ -50,7 +49,6 @@ module Guard
|
|
50
49
|
def _join_for_glob(fragments)
|
51
50
|
"{#{fragments.join(',')}}"
|
52
51
|
end
|
53
|
-
|
54
52
|
end
|
55
53
|
end
|
56
54
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Guard
|
2
|
+
class Minitest
|
3
|
+
class Inspector
|
4
|
+
|
5
|
+
attr_reader :test_folders, :test_file_patterns
|
6
|
+
|
7
|
+
def initialize(test_folders, test_file_patterns)
|
8
|
+
@test_folders = test_folders.uniq.compact
|
9
|
+
@test_file_patterns = test_file_patterns.uniq.compact
|
10
|
+
end
|
11
|
+
|
12
|
+
def clean_all
|
13
|
+
clean(test_folders)
|
14
|
+
end
|
15
|
+
|
16
|
+
def clean(paths)
|
17
|
+
paths.reduce([]) do |memo, path|
|
18
|
+
if File.directory?(path)
|
19
|
+
memo += _test_files_for_paths(path)
|
20
|
+
else
|
21
|
+
memo << path if _test_file?(path)
|
22
|
+
end
|
23
|
+
memo
|
24
|
+
end.uniq
|
25
|
+
end
|
26
|
+
|
27
|
+
def clear_memoized_test_files
|
28
|
+
@all_test_files = nil
|
29
|
+
end
|
30
|
+
|
31
|
+
def all_test_files
|
32
|
+
@all_test_files ||= _test_files_for_paths
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def _test_files_for_paths(paths = test_folders)
|
38
|
+
paths = _join_for_glob(Array(paths))
|
39
|
+
files = _join_for_glob(test_file_patterns)
|
40
|
+
|
41
|
+
Dir["#{paths}/**/#{files}"]
|
42
|
+
end
|
43
|
+
|
44
|
+
def _test_file?(path)
|
45
|
+
_test_files_for_paths.include?(path)
|
46
|
+
end
|
47
|
+
|
48
|
+
def _join_for_glob(fragments)
|
49
|
+
"{#{fragments.join(',')}}"
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -1,12 +1,9 @@
|
|
1
1
|
module Guard
|
2
2
|
class Minitest < Plugin
|
3
3
|
class Notifier
|
4
|
-
|
5
4
|
def self.guard_message(test_count, assertion_count, failure_count, error_count, skip_count, duration)
|
6
5
|
message = "#{test_count} tests"
|
7
|
-
if skip_count > 0
|
8
|
-
message << " (#{skip_count} skipped)"
|
9
|
-
end
|
6
|
+
message << " (#{skip_count} skipped)" if skip_count > 0
|
10
7
|
message << "\n#{assertion_count} assertions, #{failure_count} failures, #{error_count} errors"
|
11
8
|
if test_count && assertion_count
|
12
9
|
message << "\n\n%.2f tests/s, %.2f assertions/s\n\nFinished in %.4f seconds" % [test_count / duration, assertion_count / duration, duration]
|
@@ -31,7 +28,6 @@ module Guard
|
|
31
28
|
|
32
29
|
Compat::UI.notify(message, title: 'Minitest results', image: image)
|
33
30
|
end
|
34
|
-
|
35
31
|
end
|
36
32
|
end
|
37
33
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'guard/notifier'
|
2
|
+
|
3
|
+
module Guard
|
4
|
+
class Minitest
|
5
|
+
class Notifier
|
6
|
+
|
7
|
+
def self.guard_message(test_count, assertion_count, failure_count, error_count, skip_count, duration)
|
8
|
+
message = "#{test_count} tests"
|
9
|
+
if skip_count > 0
|
10
|
+
message << " (#{skip_count} skipped)"
|
11
|
+
end
|
12
|
+
message << "\n#{assertion_count} assertions, #{failure_count} failures, #{error_count} errors"
|
13
|
+
if test_count && assertion_count
|
14
|
+
message << "\n\n%.2f tests/s, %.2f assertions/s\n\nFinished in %.4f seconds" % [test_count / duration, assertion_count / duration, duration]
|
15
|
+
end
|
16
|
+
message
|
17
|
+
end
|
18
|
+
|
19
|
+
# failed | pending (skip) | success
|
20
|
+
def self.guard_image(failure_count, skip_count)
|
21
|
+
if failure_count > 0
|
22
|
+
:failed
|
23
|
+
elsif skip_count > 0
|
24
|
+
:pending
|
25
|
+
else
|
26
|
+
:success
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.notify(test_count, assertion_count, failure_count, error_count, skip_count, duration)
|
31
|
+
message = guard_message(test_count, assertion_count, failure_count, error_count, skip_count, duration)
|
32
|
+
image = guard_image(failure_count + error_count, skip_count)
|
33
|
+
|
34
|
+
::Guard::Notifier.notify(message, title: 'Minitest results', image: image)
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -4,15 +4,13 @@ require 'guard/minitest/notifier'
|
|
4
4
|
module Guard
|
5
5
|
class Minitest < Plugin
|
6
6
|
class Reporter < ::Minitest::StatisticsReporter
|
7
|
-
|
8
7
|
def report
|
9
8
|
super
|
10
9
|
|
11
|
-
::Guard::Minitest::Notifier.notify(
|
12
|
-
|
13
|
-
|
10
|
+
::Guard::Minitest::Notifier.notify(count, assertions,
|
11
|
+
failures, errors,
|
12
|
+
skips, total_time)
|
14
13
|
end
|
15
|
-
|
16
14
|
end
|
17
15
|
end
|
18
16
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'minitest'
|
2
|
+
require 'guard/minitest/notifier'
|
3
|
+
|
4
|
+
module Guard
|
5
|
+
class Minitest
|
6
|
+
class Reporter < ::Minitest::StatisticsReporter
|
7
|
+
|
8
|
+
def report
|
9
|
+
super
|
10
|
+
|
11
|
+
::Guard::Minitest::Notifier.notify(self.count, self.assertions,
|
12
|
+
self.failures, self.errors,
|
13
|
+
self.skips, self.total_time)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -4,7 +4,6 @@ require 'guard/minitest/notifier'
|
|
4
4
|
module Guard
|
5
5
|
class Minitest < Plugin
|
6
6
|
class Reporter < ::Minitest::Reporter
|
7
|
-
|
8
7
|
def report
|
9
8
|
aggregate = results.group_by { |r| r.failure.class }
|
10
9
|
aggregate.default = [] # dumb. group_by should provide this
|
@@ -14,9 +13,8 @@ module Guard
|
|
14
13
|
s = aggregate[::Minitest::Skip].size
|
15
14
|
t = Time.now - start_time
|
16
15
|
|
17
|
-
::Guard::Minitest::Notifier.notify(count,
|
16
|
+
::Guard::Minitest::Notifier.notify(count, assertions, f, e, s, t)
|
18
17
|
end
|
19
|
-
|
20
18
|
end
|
21
19
|
end
|
22
20
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'minitest'
|
2
|
+
require 'guard/minitest/notifier'
|
3
|
+
|
4
|
+
module Guard
|
5
|
+
class Minitest
|
6
|
+
class Reporter < ::Minitest::Reporter
|
7
|
+
|
8
|
+
def report
|
9
|
+
aggregate = results.group_by { |r| r.failure.class }
|
10
|
+
aggregate.default = [] # dumb. group_by should provide this
|
11
|
+
|
12
|
+
f = aggregate[::Minitest::Assertion].size
|
13
|
+
e = aggregate[::Minitest::UnexpectedError].size
|
14
|
+
s = aggregate[::Minitest::Skip].size
|
15
|
+
t = Time.now - start_time
|
16
|
+
|
17
|
+
::Guard::Minitest::Notifier.notify(count, self.assertions, f, e, s, t)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'guard/minitest/inspector'
|
2
|
+
require 'English'
|
2
3
|
|
3
4
|
module Guard
|
4
5
|
class Minitest < Plugin
|
@@ -16,8 +17,8 @@ module Guard
|
|
16
17
|
all_env: {},
|
17
18
|
env: {},
|
18
19
|
include: [],
|
19
|
-
test_folders: %w
|
20
|
-
test_file_patterns: %w
|
20
|
+
test_folders: %w(test spec),
|
21
|
+
test_file_patterns: %w(*_test.rb test_*.rb *_spec.rb),
|
21
22
|
cli: nil,
|
22
23
|
autorun: true
|
23
24
|
}.merge(options)
|
@@ -37,19 +38,23 @@ module Guard
|
|
37
38
|
message = "Running: #{options[:all] ? 'all tests' : paths.join(' ')}"
|
38
39
|
Compat::UI.info message, reset: true
|
39
40
|
|
40
|
-
|
41
|
+
begin
|
42
|
+
status = _run_possibly_bundled_command(paths, options[:all])
|
43
|
+
rescue Errno::ENOENT => e
|
44
|
+
Compat::UI.error e.message
|
45
|
+
throw :task_has_failed
|
46
|
+
end
|
47
|
+
|
48
|
+
success = status.zero?
|
41
49
|
|
42
50
|
# When using zeus or spring, the Guard::Minitest::Reporter can't be used because the minitests run in another
|
43
51
|
# process, but we can use the exit status of the client process to distinguish between :success and :failed.
|
44
52
|
if zeus? || spring?
|
45
|
-
Compat::UI.notify(message, title: 'Minitest results', image:
|
53
|
+
Compat::UI.notify(message, title: 'Minitest results', image: success ? :success : :failed)
|
46
54
|
end
|
47
55
|
|
48
|
-
|
49
|
-
|
50
|
-
else
|
51
|
-
status
|
52
|
-
end
|
56
|
+
run_all_coz_ok = @options[:all_after_pass] && success && !options[:all]
|
57
|
+
run_all_coz_ok ? run_all : success
|
53
58
|
end
|
54
59
|
|
55
60
|
def run_all
|
@@ -62,12 +67,12 @@ module Guard
|
|
62
67
|
run(paths, all: all_paths?(paths))
|
63
68
|
end
|
64
69
|
|
65
|
-
def run_on_additions(
|
70
|
+
def run_on_additions(_paths)
|
66
71
|
inspector.clear_memoized_test_files
|
67
72
|
true
|
68
73
|
end
|
69
74
|
|
70
|
-
def run_on_removals(
|
75
|
+
def run_on_removals(_paths)
|
71
76
|
inspector.clear_memoized_test_files
|
72
77
|
end
|
73
78
|
|
@@ -117,30 +122,24 @@ module Guard
|
|
117
122
|
@options[:autorun]
|
118
123
|
end
|
119
124
|
|
120
|
-
def
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
end
|
125
|
+
def _run(*args)
|
126
|
+
Compat::UI.debug "Running: #{args.join(' ')}"
|
127
|
+
return $CHILD_STATUS.exitstatus unless Kernel.system(*args).nil?
|
128
|
+
|
129
|
+
fail Errno::ENOENT, args.join(' ')
|
130
|
+
end
|
131
|
+
|
132
|
+
def _run_possibly_bundled_command(paths, all)
|
133
|
+
args = minitest_command(paths, all)
|
134
|
+
bundler_env = !bundler? && defined?(::Bundler)
|
135
|
+
bundler_env ? ::Bundler.with_clean_env { _run(*args) } : _run(*args)
|
132
136
|
end
|
133
137
|
|
134
138
|
def _commander(paths)
|
135
|
-
if drb?
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
elsif spring?
|
140
|
-
spring_command(paths)
|
141
|
-
else
|
142
|
-
ruby_command(paths)
|
143
|
-
end
|
139
|
+
return drb_command(paths) if drb?
|
140
|
+
return zeus_command(paths) if zeus?
|
141
|
+
return spring_command(paths) if spring?
|
142
|
+
ruby_command(paths)
|
144
143
|
end
|
145
144
|
|
146
145
|
def minitest_command(paths, all)
|
@@ -156,7 +155,7 @@ module Guard
|
|
156
155
|
end
|
157
156
|
|
158
157
|
def drb_command(paths)
|
159
|
-
%w
|
158
|
+
%w(testdrb) + generate_includes(false) + relative_paths(paths)
|
160
159
|
end
|
161
160
|
|
162
161
|
def zeus_command(paths)
|
@@ -167,7 +166,7 @@ module Guard
|
|
167
166
|
def spring_command(paths)
|
168
167
|
command = @options[:spring].is_a?(String) ? @options[:spring] : 'bin/rake test'
|
169
168
|
cmd_parts = [command]
|
170
|
-
cmd_parts << File.expand_path('../runners/old_runner.rb', __FILE__) unless
|
169
|
+
cmd_parts << File.expand_path('../runners/old_runner.rb', __FILE__) unless Utils.minitest_version_gte_5? || command != 'spring testunit'
|
171
170
|
if cli_options.length > 0
|
172
171
|
cmd_parts + paths + ['--'] + cli_options
|
173
172
|
else
|
@@ -195,6 +194,7 @@ module Guard
|
|
195
194
|
|
196
195
|
cmd_parts << '--'
|
197
196
|
cmd_parts += cli_options
|
197
|
+
cmd_parts
|
198
198
|
end
|
199
199
|
|
200
200
|
def generate_includes(include_test_folders = true)
|
@@ -204,23 +204,20 @@ module Guard
|
|
204
204
|
folders = include_folders
|
205
205
|
end
|
206
206
|
|
207
|
-
folders.map {|f| %
|
207
|
+
folders.map { |f| %(-I"#{f}") }
|
208
208
|
end
|
209
209
|
|
210
|
-
def generate_env(all=false)
|
210
|
+
def generate_env(all = false)
|
211
211
|
base_env.merge(all ? all_env : {})
|
212
212
|
end
|
213
213
|
|
214
214
|
def base_env
|
215
|
-
Hash[(@options[:env] || {}).map{|key, value| [key.to_s, value.to_s]}]
|
215
|
+
Hash[(@options[:env] || {}).map { |key, value| [key.to_s, value.to_s] }]
|
216
216
|
end
|
217
217
|
|
218
218
|
def all_env
|
219
|
-
|
220
|
-
|
221
|
-
else
|
222
|
-
{@options[:all_env].to_s => "true"}
|
223
|
-
end
|
219
|
+
return { @options[:all_env].to_s => 'true' } unless @options[:all_env].is_a? Hash
|
220
|
+
Hash[@options[:all_env].map { |key, value| [key.to_s, value.to_s] }]
|
224
221
|
end
|
225
222
|
|
226
223
|
def relative_paths(paths)
|
@@ -233,20 +230,20 @@ module Guard
|
|
233
230
|
|
234
231
|
def parse_deprecated_options
|
235
232
|
if @options.key?(:notify)
|
236
|
-
|
233
|
+
# TODO: no coverage
|
234
|
+
Compat::UI.info %(DEPRECATION WARNING: The :notify option is deprecated. Guard notification configuration is used.)
|
237
235
|
end
|
238
236
|
|
239
237
|
[:seed, :verbose].each do |key|
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
238
|
+
next unless (value = @options.delete(key))
|
239
|
+
|
240
|
+
final_value = "--#{key}"
|
241
|
+
final_value << " #{value}" unless [TrueClass, FalseClass].include?(value.class)
|
242
|
+
cli_options << final_value
|
244
243
|
|
245
|
-
|
246
|
-
end
|
244
|
+
Compat::UI.info %(DEPRECATION WARNING: The :#{key} option is deprecated. Pass standard command line argument "--#{key}" to Minitest with the :cli option.)
|
247
245
|
end
|
248
246
|
end
|
249
|
-
|
250
247
|
end
|
251
248
|
end
|
252
249
|
end
|
@@ -0,0 +1,252 @@
|
|
1
|
+
require 'guard/minitest/inspector'
|
2
|
+
|
3
|
+
module Guard
|
4
|
+
class Minitest
|
5
|
+
class Runner
|
6
|
+
attr_accessor :inspector
|
7
|
+
|
8
|
+
def initialize(options = {})
|
9
|
+
@options = {
|
10
|
+
all_after_pass: false,
|
11
|
+
bundler: File.exist?("#{Dir.pwd}/Gemfile"),
|
12
|
+
rubygems: false,
|
13
|
+
drb: false,
|
14
|
+
zeus: false,
|
15
|
+
spring: false,
|
16
|
+
all_env: {},
|
17
|
+
env: {},
|
18
|
+
include: [],
|
19
|
+
test_folders: %w[test spec],
|
20
|
+
test_file_patterns: %w[*_test.rb test_*.rb *_spec.rb],
|
21
|
+
cli: nil,
|
22
|
+
autorun: true
|
23
|
+
}.merge(options)
|
24
|
+
|
25
|
+
parse_deprecated_options
|
26
|
+
|
27
|
+
[:test_folders, :test_file_patterns].each do |k|
|
28
|
+
@options[k] = Array(@options[k]).uniq.compact
|
29
|
+
end
|
30
|
+
|
31
|
+
@inspector = Inspector.new(test_folders, test_file_patterns)
|
32
|
+
end
|
33
|
+
|
34
|
+
def run(paths, options = {})
|
35
|
+
return unless options[:all] || !paths.empty?
|
36
|
+
|
37
|
+
message = "Running: #{options[:all] ? 'all tests' : paths.join(' ')}"
|
38
|
+
UI.info message, reset: true
|
39
|
+
|
40
|
+
status = _run_command(paths, options[:all])
|
41
|
+
|
42
|
+
# When using zeus or spring, the Guard::Minitest::Reporter can't be used because the minitests run in another
|
43
|
+
# process, but we can use the exit status of the client process to distinguish between :success and :failed.
|
44
|
+
if zeus? || spring?
|
45
|
+
::Guard::Notifier.notify(message, title: 'Minitest results', image: status ? :success : :failed)
|
46
|
+
end
|
47
|
+
|
48
|
+
if @options[:all_after_pass] && status && !options[:all]
|
49
|
+
run_all
|
50
|
+
else
|
51
|
+
status
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def run_all
|
56
|
+
paths = inspector.clean_all
|
57
|
+
run(paths, all: true)
|
58
|
+
end
|
59
|
+
|
60
|
+
def run_on_modifications(paths = [])
|
61
|
+
paths = inspector.clean(paths)
|
62
|
+
run(paths, all: all_paths?(paths))
|
63
|
+
end
|
64
|
+
|
65
|
+
def run_on_additions(paths)
|
66
|
+
inspector.clear_memoized_test_files
|
67
|
+
true
|
68
|
+
end
|
69
|
+
|
70
|
+
def run_on_removals(paths)
|
71
|
+
inspector.clear_memoized_test_files
|
72
|
+
end
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
def cli_options
|
77
|
+
@cli_options ||= Array(@options[:cli])
|
78
|
+
end
|
79
|
+
|
80
|
+
def bundler?
|
81
|
+
@options[:bundler] && !@options[:spring]
|
82
|
+
end
|
83
|
+
|
84
|
+
def rubygems?
|
85
|
+
!bundler? && @options[:rubygems]
|
86
|
+
end
|
87
|
+
|
88
|
+
def drb?
|
89
|
+
@options[:drb]
|
90
|
+
end
|
91
|
+
|
92
|
+
def zeus?
|
93
|
+
@options[:zeus].is_a?(String) || @options[:zeus]
|
94
|
+
end
|
95
|
+
|
96
|
+
def spring?
|
97
|
+
@options[:spring].is_a?(String) || @options[:spring]
|
98
|
+
end
|
99
|
+
|
100
|
+
def all_after_pass?
|
101
|
+
@options[:all_after_pass]
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_folders
|
105
|
+
@options[:test_folders]
|
106
|
+
end
|
107
|
+
|
108
|
+
def include_folders
|
109
|
+
@options[:include]
|
110
|
+
end
|
111
|
+
|
112
|
+
def test_file_patterns
|
113
|
+
@options[:test_file_patterns]
|
114
|
+
end
|
115
|
+
|
116
|
+
def autorun?
|
117
|
+
@options[:autorun]
|
118
|
+
end
|
119
|
+
|
120
|
+
def _run_command(paths, all)
|
121
|
+
if bundler?
|
122
|
+
system(*minitest_command(paths, all))
|
123
|
+
else
|
124
|
+
if defined?(::Bundler)
|
125
|
+
::Bundler.with_clean_env do
|
126
|
+
system(*minitest_command(paths, all))
|
127
|
+
end
|
128
|
+
else
|
129
|
+
system(*minitest_command(paths, all))
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
def _commander(paths)
|
135
|
+
if drb?
|
136
|
+
drb_command(paths)
|
137
|
+
elsif zeus?
|
138
|
+
zeus_command(paths)
|
139
|
+
elsif spring?
|
140
|
+
spring_command(paths)
|
141
|
+
else
|
142
|
+
ruby_command(paths)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
def minitest_command(paths, all)
|
147
|
+
cmd_parts = []
|
148
|
+
|
149
|
+
cmd_parts << 'bundle exec' if bundler?
|
150
|
+
cmd_parts << _commander(paths)
|
151
|
+
|
152
|
+
[cmd_parts.compact.join(' ')].tap do |args|
|
153
|
+
env = generate_env(all)
|
154
|
+
args.unshift(env) if env.length > 0
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
def drb_command(paths)
|
159
|
+
%w[testdrb] + generate_includes(false) + relative_paths(paths)
|
160
|
+
end
|
161
|
+
|
162
|
+
def zeus_command(paths)
|
163
|
+
command = @options[:zeus].is_a?(String) ? @options[:zeus] : 'test'
|
164
|
+
['zeus', command] + relative_paths(paths)
|
165
|
+
end
|
166
|
+
|
167
|
+
def spring_command(paths)
|
168
|
+
command = @options[:spring].is_a?(String) ? @options[:spring] : 'bin/rake test'
|
169
|
+
cmd_parts = [command]
|
170
|
+
cmd_parts << File.expand_path('../runners/old_runner.rb', __FILE__) unless (Utils.minitest_version_gte_5? || command != 'spring testunit')
|
171
|
+
if cli_options.length > 0
|
172
|
+
cmd_parts + paths + ['--'] + cli_options
|
173
|
+
else
|
174
|
+
cmd_parts + paths
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
def ruby_command(paths)
|
179
|
+
cmd_parts = ['ruby']
|
180
|
+
cmd_parts.concat(generate_includes)
|
181
|
+
cmd_parts << '-r rubygems' if rubygems?
|
182
|
+
cmd_parts << '-r bundler/setup' if bundler?
|
183
|
+
cmd_parts << '-r minitest/autorun' if autorun?
|
184
|
+
cmd_parts.concat(paths.map { |path| "-r ./#{path}" })
|
185
|
+
|
186
|
+
unless Utils.minitest_version_gte_5?
|
187
|
+
cmd_parts << "-r #{File.expand_path('../runners/old_runner.rb', __FILE__)}"
|
188
|
+
end
|
189
|
+
|
190
|
+
# All the work is done through minitest/autorun
|
191
|
+
# and requiring the test files, so this is just
|
192
|
+
# a placeholder so Ruby doesn't try to exceute
|
193
|
+
# code from STDIN.
|
194
|
+
cmd_parts << '-e ""'
|
195
|
+
|
196
|
+
cmd_parts << '--'
|
197
|
+
cmd_parts += cli_options
|
198
|
+
end
|
199
|
+
|
200
|
+
def generate_includes(include_test_folders = true)
|
201
|
+
if include_test_folders
|
202
|
+
folders = test_folders + include_folders
|
203
|
+
else
|
204
|
+
folders = include_folders
|
205
|
+
end
|
206
|
+
|
207
|
+
folders.map {|f| %[-I"#{f}"] }
|
208
|
+
end
|
209
|
+
|
210
|
+
def generate_env(all=false)
|
211
|
+
base_env.merge(all ? all_env : {})
|
212
|
+
end
|
213
|
+
|
214
|
+
def base_env
|
215
|
+
Hash[(@options[:env] || {}).map{|key, value| [key.to_s, value.to_s]}]
|
216
|
+
end
|
217
|
+
|
218
|
+
def all_env
|
219
|
+
if @options[:all_env].kind_of? Hash
|
220
|
+
Hash[@options[:all_env].map{|key, value| [key.to_s, value.to_s]}]
|
221
|
+
else
|
222
|
+
{@options[:all_env].to_s => "true"}
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
def relative_paths(paths)
|
227
|
+
paths.map { |p| "./#{p}" }
|
228
|
+
end
|
229
|
+
|
230
|
+
def all_paths?(paths)
|
231
|
+
paths == inspector.all_test_files
|
232
|
+
end
|
233
|
+
|
234
|
+
def parse_deprecated_options
|
235
|
+
if @options.key?(:notify)
|
236
|
+
UI.info %{DEPRECATION WARNING: The :notify option is deprecated. Guard notification configuration is used.}
|
237
|
+
end
|
238
|
+
|
239
|
+
[:seed, :verbose].each do |key|
|
240
|
+
if value = @options.delete(key)
|
241
|
+
final_value = "--#{key}"
|
242
|
+
final_value << " #{value}" unless [TrueClass, FalseClass].include?(value.class)
|
243
|
+
cli_options << final_value
|
244
|
+
|
245
|
+
UI.info %{DEPRECATION WARNING: The :#{key} option is deprecated. Pass standard command line argument "--#{key}" to Minitest with the :cli option.}
|
246
|
+
end
|
247
|
+
end
|
248
|
+
end
|
249
|
+
|
250
|
+
end
|
251
|
+
end
|
252
|
+
end
|
@@ -3,7 +3,6 @@ require 'guard/minitest/notifier'
|
|
3
3
|
|
4
4
|
module MiniTest
|
5
5
|
class MiniTest::Unit
|
6
|
-
|
7
6
|
begin
|
8
7
|
alias_method :_run_anything_without_guard, :_run_anything
|
9
8
|
def _run_anything(type)
|
@@ -13,6 +12,5 @@ module MiniTest
|
|
13
12
|
::Guard::Minitest::Notifier.notify(test_count, assertion_count, failures, errors, skips, duration)
|
14
13
|
end
|
15
14
|
end
|
16
|
-
|
17
15
|
end
|
18
16
|
end
|
data/lib/guard/minitest/utils.rb
CHANGED
@@ -5,7 +5,6 @@ require 'guard/minitest'
|
|
5
5
|
module Guard
|
6
6
|
class Minitest < Plugin
|
7
7
|
class Utils
|
8
|
-
|
9
8
|
def self.minitest_version
|
10
9
|
@@minitest_version ||= begin
|
11
10
|
require 'minitest'
|
@@ -24,7 +23,6 @@ module Guard
|
|
24
23
|
def self.minitest_version_gte_5_0_4?
|
25
24
|
@@minitest_version_gte_5_0_4 ||= Gem::Requirement.new('>= 5.0.4').satisfied_by?(Gem::Version.new(minitest_version))
|
26
25
|
end
|
27
|
-
|
28
26
|
end
|
29
27
|
end
|
30
28
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'rubygems/requirement'
|
2
|
+
|
3
|
+
module Guard
|
4
|
+
class Minitest
|
5
|
+
class Utils
|
6
|
+
|
7
|
+
def self.minitest_version
|
8
|
+
@@minitest_version ||= begin
|
9
|
+
require 'minitest'
|
10
|
+
::Minitest::VERSION
|
11
|
+
|
12
|
+
rescue LoadError, NameError
|
13
|
+
require 'minitest/unit'
|
14
|
+
::MiniTest::Unit::VERSION
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.minitest_version_gte_5?
|
19
|
+
@@minitest_version_gte_5 ||= Gem::Requirement.new('>= 5').satisfied_by?(Gem::Version.new(minitest_version))
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.minitest_version_gte_5_0_4?
|
23
|
+
@@minitest_version_gte_5_0_4 ||= Gem::Requirement.new('>= 5.0.4').satisfied_by?(Gem::Version.new(minitest_version))
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -7,10 +7,10 @@ else
|
|
7
7
|
end
|
8
8
|
|
9
9
|
module Minitest
|
10
|
-
def self.plugin_guard_minitest_options(
|
10
|
+
def self.plugin_guard_minitest_options(_opts, _options) # :nodoc:
|
11
11
|
end
|
12
12
|
|
13
|
-
def self.plugin_guard_minitest_init(
|
14
|
-
|
13
|
+
def self.plugin_guard_minitest_init(_options) # :nodoc:
|
14
|
+
reporter << ::Guard::Minitest::Reporter.new
|
15
15
|
end
|
16
16
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: guard-minitest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.4.
|
4
|
+
version: 2.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yann Lugrin
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-01-
|
12
|
+
date: 2015-01-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: guard-compat
|
@@ -65,15 +65,23 @@ files:
|
|
65
65
|
- LICENSE
|
66
66
|
- README.md
|
67
67
|
- lib/guard/minitest.rb
|
68
|
+
- lib/guard/minitest.rb.orig
|
68
69
|
- lib/guard/minitest/inspector.rb
|
70
|
+
- lib/guard/minitest/inspector.rb.orig
|
69
71
|
- lib/guard/minitest/notifier.rb
|
72
|
+
- lib/guard/minitest/notifier.rb.orig
|
70
73
|
- lib/guard/minitest/reporter.rb
|
74
|
+
- lib/guard/minitest/reporter.rb.orig
|
71
75
|
- lib/guard/minitest/reporters/old_reporter.rb
|
76
|
+
- lib/guard/minitest/reporters/old_reporter.rb.orig
|
72
77
|
- lib/guard/minitest/runner.rb
|
78
|
+
- lib/guard/minitest/runner.rb.orig
|
73
79
|
- lib/guard/minitest/runners/old_runner.rb
|
74
80
|
- lib/guard/minitest/templates/Guardfile
|
75
81
|
- lib/guard/minitest/utils.rb
|
82
|
+
- lib/guard/minitest/utils.rb.orig
|
76
83
|
- lib/guard/minitest/version.rb
|
84
|
+
- lib/guard/minitest/version.rb.orig
|
77
85
|
- lib/minitest/guard_minitest_plugin.rb
|
78
86
|
homepage: https://rubygems.org/gems/guard-minitest
|
79
87
|
licenses:
|
@@ -95,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
103
|
version: '0'
|
96
104
|
requirements: []
|
97
105
|
rubyforge_project:
|
98
|
-
rubygems_version: 2.4.
|
106
|
+
rubygems_version: 2.4.3
|
99
107
|
signing_key:
|
100
108
|
specification_version: 4
|
101
109
|
summary: Guard plugin for the Minitest framework
|