minitest-reporters 0.14.2 → 0.14.3
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/Gemfile +1 -1
- data/lib/minitest/around_test_hooks.rb +21 -0
- data/lib/minitest/reporter_runner.rb +33 -35
- data/lib/minitest/reporters/version.rb +1 -1
- data/lib/minitest/reporters.rb +8 -3
- data/lib/minitest/test_recorder.rb +22 -0
- data/lib/minitest/test_runner.rb +10 -1
- data/test/test_helper.rb +1 -1
- metadata +6 -5
- data/lib/minitest/before_test_hook.rb +0 -16
data/Gemfile
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
source :rubygems
|
2
|
-
gemspec
|
2
|
+
gemspec
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module MiniTest
|
2
|
+
module AroundTestHooks
|
3
|
+
def self.before_test(instance)
|
4
|
+
MiniTest::Unit.runner.before_test(instance.class, instance.__name__)
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.after_test(instance)
|
8
|
+
MiniTest::Unit.runner.after_test(instance.class, instance.__name__)
|
9
|
+
end
|
10
|
+
|
11
|
+
def before_setup
|
12
|
+
AroundTestHooks.before_test(self)
|
13
|
+
super
|
14
|
+
end
|
15
|
+
|
16
|
+
def after_teardown
|
17
|
+
super
|
18
|
+
AroundTestHooks.after_test(self)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -5,18 +5,25 @@ module MiniTest
|
|
5
5
|
#
|
6
6
|
# @see https://github.com/seattlerb/minitest MiniTest
|
7
7
|
class ReporterRunner < Unit
|
8
|
-
|
8
|
+
extend Forwardable
|
9
9
|
|
10
|
-
|
10
|
+
attr_accessor :reporters
|
11
|
+
attr_reader :test_results
|
12
|
+
attr_reader :suites_start_time
|
13
|
+
attr_reader :suite_start_time
|
14
|
+
attr_reader :test_start_time
|
15
|
+
|
16
|
+
def_delegator :@test_recorder, :assertion_count
|
11
17
|
|
12
18
|
def initialize
|
13
19
|
super
|
14
20
|
self.reporters = []
|
15
|
-
|
21
|
+
@test_results = {}
|
22
|
+
@test_recorder = TestRecorder.new
|
16
23
|
end
|
17
24
|
|
18
25
|
def _run_suites(suites, type)
|
19
|
-
|
26
|
+
@suites_start_time = Time.now
|
20
27
|
count_tests!(suites, type)
|
21
28
|
trigger_callback(:before_suites, suites, type)
|
22
29
|
super(suites, type)
|
@@ -25,63 +32,54 @@ module MiniTest
|
|
25
32
|
end
|
26
33
|
|
27
34
|
def _run_suite(suite, type)
|
35
|
+
@suite_start_time = Time.now
|
28
36
|
trigger_callback(:before_suite, suite)
|
29
|
-
self.start_time = Time.now
|
30
37
|
super(suite, type)
|
31
38
|
ensure
|
32
39
|
trigger_callback(:after_suite, suite)
|
33
40
|
end
|
34
41
|
|
35
42
|
def before_test(suite, test)
|
36
|
-
|
43
|
+
@test_start_time = Time.now
|
37
44
|
trigger_callback(:before_test, suite, test)
|
38
45
|
end
|
39
46
|
|
40
47
|
def record(suite, test, assertions, time, exception)
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
when Assertion then :failure
|
47
|
-
else :error
|
48
|
-
end
|
48
|
+
runner = TestRunner.new(suite,
|
49
|
+
test.to_sym,
|
50
|
+
assertions,
|
51
|
+
time,
|
52
|
+
exception)
|
49
53
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
assertions,
|
54
|
-
time,
|
55
|
-
result,
|
56
|
-
exception
|
57
|
-
)
|
58
|
-
|
59
|
-
test_results[suite] ||= {}
|
60
|
-
test_results[suite][test.to_sym] = test_runner
|
61
|
-
trigger_callback(result, suite, test, test_runner)
|
54
|
+
@test_results[suite] ||= {}
|
55
|
+
@test_results[suite][test.to_sym] = runner
|
56
|
+
@test_recorder.record(runner)
|
62
57
|
end
|
63
58
|
|
64
|
-
def
|
65
|
-
|
59
|
+
def after_test(suite, test)
|
60
|
+
runners = @test_recorder[suite, test.to_sym]
|
66
61
|
|
67
|
-
|
62
|
+
runners.each do |runner|
|
63
|
+
trigger_callback(runner.result, suite, test.to_sym, runner)
|
64
|
+
end
|
68
65
|
end
|
69
66
|
|
70
|
-
|
71
|
-
end
|
67
|
+
# Stub out the three IO methods used by the built-in reporter.
|
68
|
+
def puts(*args); end
|
69
|
+
def print(*args); end
|
70
|
+
def status(io = output); end
|
72
71
|
|
73
72
|
private
|
74
73
|
|
75
74
|
def trigger_callback(callback, *args)
|
76
|
-
reporters.each
|
77
|
-
reporter.public_send(callback, *args)
|
78
|
-
end
|
75
|
+
reporters.each { |r| r.public_send(callback, *args) }
|
79
76
|
end
|
80
77
|
|
81
78
|
def count_tests!(suites, type)
|
82
79
|
filter = options[:filter] || '/./'
|
83
80
|
filter = Regexp.new $1 if filter =~ /\/(.*)\//
|
84
|
-
|
81
|
+
|
82
|
+
@test_count = suites.inject(0) do |acc, suite|
|
85
83
|
acc + suite.send("#{type}_methods").grep(filter).length
|
86
84
|
end
|
87
85
|
end
|
data/lib/minitest/reporters.rb
CHANGED
@@ -4,8 +4,9 @@ module MiniTest
|
|
4
4
|
require "minitest/relative_position"
|
5
5
|
require "minitest/reporter"
|
6
6
|
require "minitest/reporter_runner"
|
7
|
-
require "minitest/
|
7
|
+
require "minitest/around_test_hooks"
|
8
8
|
require "minitest/test_runner"
|
9
|
+
require "minitest/test_recorder"
|
9
10
|
require "minitest/extensible_backtrace_filter"
|
10
11
|
|
11
12
|
module Reporters
|
@@ -34,10 +35,14 @@ module MiniTest
|
|
34
35
|
|
35
36
|
def self.use_before_test_hook!
|
36
37
|
if Unit::VERSION >= "3.3.0"
|
37
|
-
Unit::TestCase.send(:include,
|
38
|
+
Unit::TestCase.send(:include, AroundTestHooks)
|
38
39
|
else
|
39
40
|
Unit::TestCase.send(:define_method, :before_setup) do
|
40
|
-
|
41
|
+
AroundTestHooks.before_test(self)
|
42
|
+
end
|
43
|
+
|
44
|
+
Unit::TestCase.send(:define_method, :after_teardown) do
|
45
|
+
AroundTestHooks.after_test(self)
|
41
46
|
end
|
42
47
|
end
|
43
48
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module MiniTest
|
2
|
+
class TestRecorder
|
3
|
+
def initialize
|
4
|
+
@records = {}
|
5
|
+
end
|
6
|
+
|
7
|
+
def [](suite, test)
|
8
|
+
name = [suite, test]
|
9
|
+
@records[name]
|
10
|
+
end
|
11
|
+
|
12
|
+
def record(runner)
|
13
|
+
name = [runner.suite, runner.test]
|
14
|
+
@records[name] ||= []
|
15
|
+
@records[name] << runner
|
16
|
+
end
|
17
|
+
|
18
|
+
def assertion_count
|
19
|
+
@records.inject(0) { |acc, r| acc + r.last.last.assertions }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/minitest/test_runner.rb
CHANGED
@@ -1,3 +1,12 @@
|
|
1
1
|
module MiniTest
|
2
|
-
TestRunner
|
2
|
+
class TestRunner < Struct.new(:suite, :test, :assertions, :time, :exception)
|
3
|
+
def result
|
4
|
+
case exception
|
5
|
+
when nil then :pass
|
6
|
+
when Skip then :skip
|
7
|
+
when Assertion then :failure
|
8
|
+
else :error
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
3
12
|
end
|
data/test/test_helper.rb
CHANGED
@@ -13,7 +13,7 @@ end
|
|
13
13
|
|
14
14
|
if ENV["REPORTER"]
|
15
15
|
reporter_klass = MiniTest::Reporters.const_get(ENV["REPORTER"])
|
16
|
-
MiniTest::Reporters.use!
|
16
|
+
MiniTest::Reporters.use!(reporter_klass.new)
|
17
17
|
else
|
18
18
|
MiniTest::Reporters.use!(MiniTest::Reporters::DefaultReporter.new)
|
19
19
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minitest-reporters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.14.
|
4
|
+
version: 0.14.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: minitest
|
@@ -127,7 +127,7 @@ files:
|
|
127
127
|
- LICENSE
|
128
128
|
- README.md
|
129
129
|
- Rakefile
|
130
|
-
- lib/minitest/
|
130
|
+
- lib/minitest/around_test_hooks.rb
|
131
131
|
- lib/minitest/extensible_backtrace_filter.rb
|
132
132
|
- lib/minitest/relative_position.rb
|
133
133
|
- lib/minitest/reporter.rb
|
@@ -141,6 +141,7 @@ files:
|
|
141
141
|
- lib/minitest/reporters/rubymine_reporter.rb
|
142
142
|
- lib/minitest/reporters/spec_reporter.rb
|
143
143
|
- lib/minitest/reporters/version.rb
|
144
|
+
- lib/minitest/test_recorder.rb
|
144
145
|
- lib/minitest/test_runner.rb
|
145
146
|
- minitest-reporters.gemspec
|
146
147
|
- test/gallery/bad_test.rb
|
@@ -163,7 +164,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
163
164
|
version: '0'
|
164
165
|
segments:
|
165
166
|
- 0
|
166
|
-
hash:
|
167
|
+
hash: 3603087580033239175
|
167
168
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
168
169
|
none: false
|
169
170
|
requirements:
|
@@ -172,7 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
172
173
|
version: '0'
|
173
174
|
segments:
|
174
175
|
- 0
|
175
|
-
hash:
|
176
|
+
hash: 3603087580033239175
|
176
177
|
requirements: []
|
177
178
|
rubyforge_project: minitest-reporters
|
178
179
|
rubygems_version: 1.8.24
|
@@ -1,16 +0,0 @@
|
|
1
|
-
module MiniTest
|
2
|
-
module BeforeTestHook
|
3
|
-
def self.before_test(instance)
|
4
|
-
runner = MiniTest::Unit.runner
|
5
|
-
|
6
|
-
if runner.respond_to?(:before_test)
|
7
|
-
runner.before_test(instance.class, instance.__name__)
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
def before_setup
|
12
|
-
BeforeTestHook.before_test(self)
|
13
|
-
super
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|