minitest-reporters 0.7.1 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +11 -28
- data/lib/minitest/reporter.rb +2 -2
- data/lib/minitest/reporters.rb +16 -0
- data/lib/minitest/reporters/default_reporter.rb +2 -2
- data/lib/minitest/reporters/guard_reporter.rb +3 -4
- data/lib/minitest/reporters/junit_reporter.rb +2 -2
- data/lib/minitest/reporters/progress_reporter.rb +18 -7
- data/lib/minitest/reporters/ruby_mate_reporter.rb +2 -2
- data/lib/minitest/reporters/rubymine_reporter.rb +2 -2
- data/lib/minitest/reporters/spec_reporter.rb +2 -2
- data/lib/minitest/reporters/version.rb +1 -1
- data/lib/minitest/suite_runner.rb +2 -2
- data/lib/minitest/test_runner.rb +2 -2
- data/test/minitest/reporter_test.rb +1 -1
- data/test/minitest/reporters_test.rb +27 -0
- data/test/test_helper.rb +9 -14
- metadata +6 -4
data/README.md
CHANGED
@@ -10,14 +10,18 @@ Death to haphazard monkey-patching! Extend MiniTest through simple hooks.
|
|
10
10
|
|
11
11
|
In your `test_helper.rb` file, add the following lines:
|
12
12
|
|
13
|
-
require
|
14
|
-
MiniTest::
|
15
|
-
MiniTest::Unit.runner.reporters << MiniTest::Reporters::ProgressReporter.new
|
13
|
+
require "minitest/reporters"
|
14
|
+
MiniTest::Reporters.use!
|
16
15
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
This will swap out the MiniTest runner to the custom one used by minitest-reporters and use the correct reporters for Textmate, Rubymine, and the console. If you would like to write your own reporter, just `include MiniTest::Reporter` and override the methods you'd like. Take a look at the provided reporters for examples.
|
17
|
+
|
18
|
+
Don't like the default progress bar reporter?
|
19
|
+
|
20
|
+
MiniTest::Reporters.use! MiniTest::Reporters::SpecReporter.new
|
21
|
+
|
22
|
+
Want to use multiple reporters?
|
23
|
+
|
24
|
+
MiniTest::Reporters.use! [MiniTest::Reporters::SpecReporter.new, MiniTest::Reporters::GuardReporter.new]
|
21
25
|
|
22
26
|
The following reporters are provided:
|
23
27
|
|
@@ -28,29 +32,8 @@ The following reporters are provided:
|
|
28
32
|
MiniTest::Reporters::RubyMineReporter # => Reporter designed for RubyMine IDE and TeamCity CI server; see below
|
29
33
|
MiniTest::Reporters::GuardReporter # => Integrates with guard-minitest to provide on-screen notifications
|
30
34
|
|
31
|
-
I really like `ProgressReporter` for my everyday terminal usage, but I like
|
32
|
-
using `RubyMateReporter` when I'm executing test suites from TextMate. My usual
|
33
|
-
set up looks like this:
|
34
|
-
|
35
|
-
require 'minitest/reporters'
|
36
|
-
MiniTest::Unit.runner = MiniTest::SuiteRunner.new
|
37
|
-
if ENV['TM_PID']
|
38
|
-
MiniTest::Unit.runner.reporters << MiniTest::Reporters::RubyMateReporter.new
|
39
|
-
else
|
40
|
-
MiniTest::Unit.runner.reporters << MiniTest::Reporters::ProgressReporter.new
|
41
|
-
end
|
42
|
-
|
43
|
-
If you prefer integration with RubyMine test runner or TeamCity CI server you'll need:
|
44
|
-
|
45
|
-
if ENV["RM_INFO"] || ENV["TEAMCITY_VERSION"]
|
46
|
-
MiniTest::Unit.runner.reporters << MiniTest::Reporters::RubyMineReporter.new
|
47
|
-
else
|
48
|
-
...
|
49
|
-
end
|
50
|
-
|
51
35
|
## TODO ##
|
52
36
|
|
53
|
-
* Make the boilerplate code look prettier. Something like a one-line require for the general use-case would be nice.
|
54
37
|
* Add some example images of the reporters.
|
55
38
|
|
56
39
|
## Note on Patches/Pull Requests ##
|
data/lib/minitest/reporter.rb
CHANGED
data/lib/minitest/reporters.rb
CHANGED
@@ -16,5 +16,21 @@ module MiniTest
|
|
16
16
|
autoload :RubyMineReporter, "minitest/reporters/rubymine_reporter"
|
17
17
|
autoload :GuardReporter, "minitest/reporters/guard_reporter"
|
18
18
|
autoload :JUnitReporter, "minitest/reporters/junit_reporter"
|
19
|
+
|
20
|
+
def self.use!(console_reporters = ProgressReporter.new, env = ENV)
|
21
|
+
runner = SuiteRunner.new
|
22
|
+
runner.reporters = choose_reporters(console_reporters, env)
|
23
|
+
Unit.runner = runner
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.choose_reporters(console_reporters, env)
|
27
|
+
if env["TM_PID"]
|
28
|
+
[RubyMateReporter.new]
|
29
|
+
elsif env["RM_INFO"] || env["TEAMCITY_VERSION"]
|
30
|
+
[RubyMineReporter.new]
|
31
|
+
else
|
32
|
+
Array(console_reporters)
|
33
|
+
end
|
34
|
+
end
|
19
35
|
end
|
20
36
|
end
|
@@ -8,9 +8,9 @@ module MiniTest
|
|
8
8
|
#
|
9
9
|
# @see https://github.com/seattlerb/minitest MiniTest
|
10
10
|
class DefaultReporter
|
11
|
-
include
|
11
|
+
include Reporter
|
12
12
|
|
13
|
-
def initialize(backtrace_filter =
|
13
|
+
def initialize(backtrace_filter = BacktraceFilter.default_filter)
|
14
14
|
@backtrace_filter = backtrace_filter
|
15
15
|
end
|
16
16
|
|
@@ -1,15 +1,14 @@
|
|
1
1
|
begin
|
2
|
-
require
|
2
|
+
require "guard/minitest/notifier"
|
3
3
|
rescue LoadError
|
4
|
-
puts "You need guard-minitest to use this reporter"
|
4
|
+
puts "You need guard-minitest to use this reporter."
|
5
5
|
exit 1
|
6
6
|
end
|
7
7
|
|
8
8
|
module MiniTest
|
9
9
|
module Reporters
|
10
|
-
|
11
10
|
class GuardReporter
|
12
|
-
include
|
11
|
+
include Reporter
|
13
12
|
|
14
13
|
def after_suites(*args)
|
15
14
|
duration = Time.now - runner.start_time
|
@@ -10,9 +10,9 @@ module MiniTest
|
|
10
10
|
# Also inspired by Marc Seeger's attempt at producing a JUnitReporter (see https://github.com/rb2k/minitest-reporters/commit/e13d95b5f884453a9c77f62bc5cba3fa1df30ef5)
|
11
11
|
# Also inspired by minitest-ci (see https://github.com/bhenderson/minitest-ci)
|
12
12
|
class JUnitReporter
|
13
|
-
include
|
13
|
+
include Reporter
|
14
14
|
|
15
|
-
def initialize(reports_dir = "test/reports", backtrace_filter =
|
15
|
+
def initialize(reports_dir = "test/reports", backtrace_filter = BacktraceFilter.default_filter)
|
16
16
|
@backtrace_filter = backtrace_filter
|
17
17
|
@reports_path = File.join(Dir.getwd, reports_dir)
|
18
18
|
p "Emptying #{@reports_path}"
|
@@ -11,13 +11,20 @@ module MiniTest
|
|
11
11
|
# @see https://github.com/jeffkreeftmeijer/fuubar Fuubar
|
12
12
|
# @see https://gist.github.com/356945 paydro's monkey-patch
|
13
13
|
class ProgressReporter
|
14
|
-
include
|
14
|
+
include Reporter
|
15
15
|
include ANSI::Code
|
16
16
|
|
17
17
|
INFO_PADDING = 2
|
18
18
|
|
19
|
-
def initialize(
|
20
|
-
|
19
|
+
def initialize(options = {})
|
20
|
+
if options.is_a?(Hash)
|
21
|
+
@backtrace_filter = options.fetch(:backtrace_filter, BacktraceFilter.default_filter)
|
22
|
+
@detailed_skip = options.fetch(:detailed_skip, true)
|
23
|
+
else
|
24
|
+
warn "Please use :backtrace_filter => filter instead of passing in the filter directly."
|
25
|
+
@backtrace_filter = options
|
26
|
+
@detailed_skip = true
|
27
|
+
end
|
21
28
|
end
|
22
29
|
|
23
30
|
def before_suites(suites, type)
|
@@ -44,10 +51,14 @@ module MiniTest
|
|
44
51
|
|
45
52
|
def skip(suite, test, test_runner)
|
46
53
|
@color = YELLOW unless @color == RED
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
54
|
+
|
55
|
+
if @detailed_skip
|
56
|
+
print(yellow { 'SKIP' })
|
57
|
+
print_test_with_time(suite, test)
|
58
|
+
puts
|
59
|
+
puts
|
60
|
+
end
|
61
|
+
|
51
62
|
increment
|
52
63
|
end
|
53
64
|
|
@@ -5,11 +5,11 @@ module MiniTest
|
|
5
5
|
module Reporters
|
6
6
|
# Simple reporter designed for RubyMate.
|
7
7
|
class RubyMateReporter
|
8
|
-
include
|
8
|
+
include Reporter
|
9
9
|
|
10
10
|
INFO_PADDING = 2
|
11
11
|
|
12
|
-
def initialize(backtrace_filter =
|
12
|
+
def initialize(backtrace_filter = BacktraceFilter.default_filter)
|
13
13
|
@backtrace_filter = backtrace_filter
|
14
14
|
end
|
15
15
|
|
@@ -27,7 +27,7 @@ rescue LoadError
|
|
27
27
|
# delegate to default reporter
|
28
28
|
module MiniTest
|
29
29
|
module Reporters
|
30
|
-
class RubyMineReporter <
|
30
|
+
class RubyMineReporter < DefaultReporter
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
@@ -35,7 +35,7 @@ else
|
|
35
35
|
module MiniTest
|
36
36
|
module Reporters
|
37
37
|
class RubyMineReporter
|
38
|
-
include
|
38
|
+
include Reporter
|
39
39
|
include ANSI::Code
|
40
40
|
|
41
41
|
include ::Rake::TeamCity::RunnerCommon
|
@@ -9,14 +9,14 @@ module MiniTest
|
|
9
9
|
# @see https://github.com/TwP/turn turn
|
10
10
|
# @see https://gist.github.com/356945 paydro's monkey-patch
|
11
11
|
class SpecReporter
|
12
|
-
include
|
12
|
+
include Reporter
|
13
13
|
include ANSI::Code
|
14
14
|
|
15
15
|
TEST_PADDING = 2
|
16
16
|
INFO_PADDING = 8
|
17
17
|
MARK_SIZE = 5
|
18
18
|
|
19
|
-
def initialize(backtrace_filter =
|
19
|
+
def initialize(backtrace_filter = BacktraceFilter.default_filter)
|
20
20
|
@backtrace_filter = backtrace_filter
|
21
21
|
end
|
22
22
|
|
@@ -8,7 +8,7 @@ module MiniTest
|
|
8
8
|
# Based upon Ryan Davis of Seattle.rb's MiniTest (MIT License).
|
9
9
|
#
|
10
10
|
# @see https://github.com/seattlerb/minitest MiniTest
|
11
|
-
class SuiteRunner <
|
11
|
+
class SuiteRunner < Unit
|
12
12
|
attr_accessor :suite_start_time, :test_start_time, :reporters
|
13
13
|
|
14
14
|
def initialize
|
@@ -107,4 +107,4 @@ module MiniTest
|
|
107
107
|
output.sync = old_sync if sync
|
108
108
|
end
|
109
109
|
end
|
110
|
-
end
|
110
|
+
end
|
data/lib/minitest/test_runner.rb
CHANGED
@@ -24,8 +24,8 @@ module MiniTest
|
|
24
24
|
|
25
25
|
def puke(suite, test, exception)
|
26
26
|
case exception
|
27
|
-
when
|
28
|
-
when
|
27
|
+
when Skip then [:skip, exception]
|
28
|
+
when Assertion then [:failure, exception]
|
29
29
|
else [:error, exception]
|
30
30
|
end
|
31
31
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module MiniTestReportersTest
|
4
|
+
class ReportersTest < TestCase
|
5
|
+
test "chooses the Rubymine reporter when necessary" do
|
6
|
+
# Rubymine reporter complains when RubyMine libs are not available, so
|
7
|
+
# stub its #puts method out.
|
8
|
+
MiniTest::Unit.runner.output.stubs(:puts)
|
9
|
+
|
10
|
+
reporters = Minitest::Reporters.choose_reporters [], { "RM_INFO" => "x" }
|
11
|
+
assert_instance_of MiniTest::Reporters::RubyMineReporter, reporters[0]
|
12
|
+
|
13
|
+
reporters = Minitest::Reporters.choose_reporters [], { "TEAMCITY_VERSION" => "x" }
|
14
|
+
assert_instance_of MiniTest::Reporters::RubyMineReporter, reporters[0]
|
15
|
+
end
|
16
|
+
|
17
|
+
test "chooses the TextMate reporter when necessary" do
|
18
|
+
reporters = Minitest::Reporters.choose_reporters [], {"TM_PID" => "x"}
|
19
|
+
assert_instance_of MiniTest::Reporters::RubyMateReporter, reporters[0]
|
20
|
+
end
|
21
|
+
|
22
|
+
test "chooses the console reporters when necessary" do
|
23
|
+
reporters = Minitest::Reporters.choose_reporters [MiniTest::Reporters::SpecReporter.new], {}
|
24
|
+
assert_instance_of MiniTest::Reporters::SpecReporter, reporters[0]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -18,21 +18,16 @@ module MiniTestReportersTest
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
MiniTest::Unit.runner = MiniTest::SuiteRunner.new
|
22
|
-
|
23
21
|
# Testing the built-in reporters using automated unit testing would be extremely
|
24
22
|
# brittle. Consequently, there are no unit tests for them. Instead, uncomment
|
25
23
|
# the reporter that you'd like to test and run the full test suite. Make sure to
|
26
24
|
# try them with skipped, failing, and error tests as well!
|
27
|
-
|
28
|
-
|
29
|
-
#
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
# MiniTest::Unit.runner.reporters << MiniTest::Reporters::SpecReporter.new
|
37
|
-
MiniTest::Unit.runner.reporters << MiniTest::Reporters::ProgressReporter.new
|
38
|
-
end
|
25
|
+
|
26
|
+
MiniTest::Reporters.use!
|
27
|
+
# MiniTest::Reporters.use! MiniTest::Reporters::DefaultReporter.new
|
28
|
+
# MiniTest::Reporters.use! MiniTest::Reporters::SpecReporter.new
|
29
|
+
# MiniTest::Reporters.use! MiniTest::Reporters::ProgressReporter.new(:detailed_skip => false)
|
30
|
+
# MiniTest::Reporters.use! MiniTest::Reporters::RubyMateReporter.new
|
31
|
+
# MiniTest::Reporters.use! MiniTest::Reporters::RubyMineReporter.new
|
32
|
+
# MiniTest::Reporters.use! MiniTest::Reporters::GuardReporter.new
|
33
|
+
# MiniTest::Reporters.use! MiniTest::Reporters::JUnitReporter.new
|
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.
|
4
|
+
version: 0.8.0
|
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: 2012-
|
12
|
+
date: 2012-06-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: minitest
|
@@ -175,6 +175,7 @@ files:
|
|
175
175
|
- minitest-reporters.gemspec
|
176
176
|
- test/minitest/backtrace_filter_test.rb
|
177
177
|
- test/minitest/reporter_test.rb
|
178
|
+
- test/minitest/reporters_test.rb
|
178
179
|
- test/minitest/suite_runner_test.rb
|
179
180
|
- test/minitest/test_runner_test.rb
|
180
181
|
- test/support/fixtures/empty_test_fixture.rb
|
@@ -200,7 +201,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
200
201
|
version: '0'
|
201
202
|
segments:
|
202
203
|
- 0
|
203
|
-
hash:
|
204
|
+
hash: -2178815342268569310
|
204
205
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
205
206
|
none: false
|
206
207
|
requirements:
|
@@ -209,7 +210,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
209
210
|
version: '0'
|
210
211
|
segments:
|
211
212
|
- 0
|
212
|
-
hash:
|
213
|
+
hash: -2178815342268569310
|
213
214
|
requirements: []
|
214
215
|
rubyforge_project: minitest-reporters
|
215
216
|
rubygems_version: 1.8.24
|
@@ -219,6 +220,7 @@ summary: Create customizable MiniTest output formats
|
|
219
220
|
test_files:
|
220
221
|
- test/minitest/backtrace_filter_test.rb
|
221
222
|
- test/minitest/reporter_test.rb
|
223
|
+
- test/minitest/reporters_test.rb
|
222
224
|
- test/minitest/suite_runner_test.rb
|
223
225
|
- test/minitest/test_runner_test.rb
|
224
226
|
- test/support/fixtures/empty_test_fixture.rb
|