minitest-reporters 1.3.0 → 1.3.1.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +27 -27
  3. data/.ruby-gemset +1 -1
  4. data/.travis.yml +10 -10
  5. data/.yardopts +5 -5
  6. data/CHANGELOG.md +58 -54
  7. data/Gemfile +2 -2
  8. data/LICENSE +19 -19
  9. data/README.md +134 -134
  10. data/Rakefile +60 -60
  11. data/lib/minitest/extensible_backtrace_filter.rb +67 -67
  12. data/lib/minitest/minitest_reporter_plugin.rb +75 -75
  13. data/lib/minitest/old_activesupport_fix.rb +24 -24
  14. data/lib/minitest/relative_position.rb +26 -26
  15. data/lib/minitest/reporters.rb +91 -91
  16. data/lib/minitest/reporters/ansi.rb +31 -31
  17. data/lib/minitest/reporters/base_reporter.rb +119 -117
  18. data/lib/minitest/reporters/default_reporter.rb +228 -228
  19. data/lib/minitest/reporters/html_reporter.rb +221 -221
  20. data/lib/minitest/reporters/junit_reporter.rb +158 -158
  21. data/lib/minitest/reporters/mean_time_reporter.rb +392 -392
  22. data/lib/minitest/reporters/progress_reporter.rb +96 -96
  23. data/lib/minitest/reporters/ruby_mate_reporter.rb +54 -54
  24. data/lib/minitest/reporters/rubymine_reporter.rb +117 -117
  25. data/lib/minitest/reporters/spec_reporter.rb +61 -61
  26. data/lib/minitest/reporters/version.rb +5 -5
  27. data/lib/minitest/templates/index.html.erb +82 -82
  28. data/minitest-reporters.gemspec +31 -31
  29. data/test/fixtures/junit_filename_bug_example_test.rb +21 -21
  30. data/test/fixtures/mean_time_test.rb +8 -8
  31. data/test/fixtures/progress_detailed_skip_test.rb +8 -8
  32. data/test/fixtures/progress_test.rb +8 -8
  33. data/test/fixtures/sample_test.rb +15 -15
  34. data/test/fixtures/spec_test.rb +13 -13
  35. data/test/gallery/bad_test.rb +25 -25
  36. data/test/gallery/good_test.rb +14 -14
  37. data/test/integration/reporters/junit_reporter_test.rb +12 -12
  38. data/test/integration/reporters/mean_time_reporter_test.rb +7 -7
  39. data/test/integration/reporters/progress_reporter_test.rb +34 -34
  40. data/test/test_helper.rb +22 -22
  41. data/test/unit/minitest/extensible_backtrace_filter_test.rb +42 -42
  42. data/test/unit/minitest/mean_time_reporter_unit_test.rb +152 -152
  43. data/test/unit/minitest/minitest_reporter_plugin_test.rb +14 -14
  44. data/test/unit/minitest/reporters_test.rb +65 -65
  45. data/test/unit/minitest/spec_reporter_test.rb +41 -41
  46. metadata +4 -4
@@ -1,26 +1,26 @@
1
- module Minitest
2
- module RelativePosition
3
- TEST_PADDING = 2
4
- TEST_SIZE = 63
5
- MARK_SIZE = 5
6
- INFO_PADDING = 8
7
-
8
- private
9
-
10
- def print_with_info_padding(line)
11
- puts pad(line, INFO_PADDING)
12
- end
13
-
14
- def pad(str, size = INFO_PADDING)
15
- ' ' * size + str
16
- end
17
-
18
- def pad_mark(str)
19
- "%#{MARK_SIZE}s" % str
20
- end
21
-
22
- def pad_test(str)
23
- pad("%-#{TEST_SIZE}s" % str, TEST_PADDING)
24
- end
25
- end
26
- end
1
+ module Minitest
2
+ module RelativePosition
3
+ TEST_PADDING = 2
4
+ TEST_SIZE = 63
5
+ MARK_SIZE = 5
6
+ INFO_PADDING = 8
7
+
8
+ private
9
+
10
+ def print_with_info_padding(line)
11
+ puts pad(line, INFO_PADDING)
12
+ end
13
+
14
+ def pad(str, size = INFO_PADDING)
15
+ ' ' * size + str
16
+ end
17
+
18
+ def pad_mark(str)
19
+ "%#{MARK_SIZE}s" % str
20
+ end
21
+
22
+ def pad_test(str)
23
+ pad("%-#{TEST_SIZE}s" % str, TEST_PADDING)
24
+ end
25
+ end
26
+ end
@@ -1,91 +1,91 @@
1
- require 'minitest'
2
-
3
- module Minitest
4
- require "minitest/relative_position"
5
- require "minitest/extensible_backtrace_filter"
6
-
7
- module Reporters
8
- require "minitest/reporters/version"
9
-
10
- autoload :ANSI, "minitest/reporters/ansi"
11
- autoload :BaseReporter, "minitest/reporters/base_reporter"
12
- autoload :DefaultReporter, "minitest/reporters/default_reporter"
13
- autoload :SpecReporter, "minitest/reporters/spec_reporter"
14
- autoload :ProgressReporter, "minitest/reporters/progress_reporter"
15
- autoload :RubyMateReporter, "minitest/reporters/ruby_mate_reporter"
16
- autoload :RubyMineReporter, "minitest/reporters/rubymine_reporter"
17
- autoload :JUnitReporter, "minitest/reporters/junit_reporter"
18
- autoload :HtmlReporter, "minitest/reporters/html_reporter"
19
- autoload :MeanTimeReporter, "minitest/reporters/mean_time_reporter"
20
-
21
- class << self
22
- attr_accessor :reporters
23
- end
24
-
25
- def self.use!(console_reporters = ProgressReporter.new, env = ENV, backtrace_filter = nil)
26
- use_runner!(console_reporters, env)
27
- if backtrace_filter.nil? && !defined?(::Rails)
28
- backtrace_filter = ExtensibleBacktraceFilter.default_filter
29
- end
30
- Minitest.backtrace_filter = backtrace_filter unless backtrace_filter.nil?
31
-
32
- unless defined?(@@loaded)
33
- use_around_test_hooks!
34
- use_old_activesupport_fix!
35
- @@loaded = true
36
- end
37
- end
38
-
39
- def self.use_runner!(console_reporters, env)
40
- self.reporters = choose_reporters(console_reporters, env)
41
- end
42
-
43
- def self.use_around_test_hooks!
44
- Minitest::Test.class_eval do
45
- def run_with_hooks(*args)
46
- if defined?(Minitest::Reporters) && (reporters = Minitest::Reporters.reporters)
47
- reporters.each { |r| r.before_test(self) }
48
- result = run_without_hooks(*args)
49
- reporters.each { |r| r.after_test(self) }
50
- result
51
- else
52
- run_without_hooks(*args)
53
- end
54
- end
55
-
56
- alias_method :run_without_hooks, :run
57
- alias_method :run, :run_with_hooks
58
- end
59
- end
60
-
61
- def self.choose_reporters(console_reporters, env)
62
- if env["MINITEST_REPORTER"]
63
- [Minitest::Reporters.const_get(env["MINITEST_REPORTER"]).new]
64
- elsif env["TM_PID"]
65
- [RubyMateReporter.new]
66
- elsif env["RM_INFO"] || env["TEAMCITY_VERSION"]
67
- [RubyMineReporter.new]
68
- elsif !env["VIM"]
69
- Array(console_reporters)
70
- end
71
- end
72
-
73
- def self.clock_time
74
- if minitest_version >= 561
75
- Minitest.clock_time
76
- else
77
- Time.now
78
- end
79
- end
80
-
81
- def self.minitest_version
82
- Minitest::VERSION.gsub('.', '').to_i
83
- end
84
-
85
- def self.use_old_activesupport_fix!
86
- if defined?(ActiveSupport::VERSION) && ActiveSupport::VERSION::MAJOR < 4
87
- require "minitest/old_activesupport_fix"
88
- end
89
- end
90
- end
91
- end
1
+ require 'minitest'
2
+
3
+ module Minitest
4
+ require "minitest/relative_position"
5
+ require "minitest/extensible_backtrace_filter"
6
+
7
+ module Reporters
8
+ require "minitest/reporters/version"
9
+
10
+ autoload :ANSI, "minitest/reporters/ansi"
11
+ autoload :BaseReporter, "minitest/reporters/base_reporter"
12
+ autoload :DefaultReporter, "minitest/reporters/default_reporter"
13
+ autoload :SpecReporter, "minitest/reporters/spec_reporter"
14
+ autoload :ProgressReporter, "minitest/reporters/progress_reporter"
15
+ autoload :RubyMateReporter, "minitest/reporters/ruby_mate_reporter"
16
+ autoload :RubyMineReporter, "minitest/reporters/rubymine_reporter"
17
+ autoload :JUnitReporter, "minitest/reporters/junit_reporter"
18
+ autoload :HtmlReporter, "minitest/reporters/html_reporter"
19
+ autoload :MeanTimeReporter, "minitest/reporters/mean_time_reporter"
20
+
21
+ class << self
22
+ attr_accessor :reporters
23
+ end
24
+
25
+ def self.use!(console_reporters = ProgressReporter.new, env = ENV, backtrace_filter = nil)
26
+ use_runner!(console_reporters, env)
27
+ if backtrace_filter.nil? && !defined?(::Rails)
28
+ backtrace_filter = ExtensibleBacktraceFilter.default_filter
29
+ end
30
+ Minitest.backtrace_filter = backtrace_filter unless backtrace_filter.nil?
31
+
32
+ unless defined?(@@loaded)
33
+ use_around_test_hooks!
34
+ use_old_activesupport_fix!
35
+ @@loaded = true
36
+ end
37
+ end
38
+
39
+ def self.use_runner!(console_reporters, env)
40
+ self.reporters = choose_reporters(console_reporters, env)
41
+ end
42
+
43
+ def self.use_around_test_hooks!
44
+ Minitest::Test.class_eval do
45
+ def run_with_hooks(*args)
46
+ if defined?(Minitest::Reporters) && (reporters = Minitest::Reporters.reporters)
47
+ reporters.each { |r| r.before_test(self) }
48
+ result = run_without_hooks(*args)
49
+ reporters.each { |r| r.after_test(self) }
50
+ result
51
+ else
52
+ run_without_hooks(*args)
53
+ end
54
+ end
55
+
56
+ alias_method :run_without_hooks, :run
57
+ alias_method :run, :run_with_hooks
58
+ end
59
+ end
60
+
61
+ def self.choose_reporters(console_reporters, env)
62
+ if env["MINITEST_REPORTER"]
63
+ [Minitest::Reporters.const_get(env["MINITEST_REPORTER"]).new]
64
+ elsif env["TM_PID"]
65
+ [RubyMateReporter.new]
66
+ elsif env["RM_INFO"] || env["TEAMCITY_VERSION"]
67
+ [RubyMineReporter.new]
68
+ elsif !env["VIM"]
69
+ Array(console_reporters)
70
+ end
71
+ end
72
+
73
+ def self.clock_time
74
+ if minitest_version >= 561
75
+ Minitest.clock_time
76
+ else
77
+ Time.now
78
+ end
79
+ end
80
+
81
+ def self.minitest_version
82
+ Minitest::VERSION.gsub('.', '').to_i
83
+ end
84
+
85
+ def self.use_old_activesupport_fix!
86
+ if defined?(ActiveSupport::VERSION) && ActiveSupport::VERSION::MAJOR < 4
87
+ require "minitest/old_activesupport_fix"
88
+ end
89
+ end
90
+ end
91
+ end
@@ -1,31 +1,31 @@
1
- module Minitest
2
- module Reporters
3
- module ANSI
4
- module Code
5
-
6
- def self.color?
7
- return false if ENV['MINITEST_REPORTERS_MONO']
8
- color_terminal = ENV['TERM'].to_s.downcase.include?("color")
9
- $stdout.tty? || color_terminal
10
- end
11
-
12
- if color?
13
- require 'ansi/code'
14
-
15
- include ::ANSI::Code
16
- extend ::ANSI::Code
17
- else
18
- def black(s = nil)
19
- block_given? ? yield : s
20
- end
21
-
22
- %w[ red green yellow blue magenta cyan white ].each do |color|
23
- alias_method color, :black
24
- end
25
-
26
- extend self
27
- end
28
- end
29
- end
30
- end
31
- end
1
+ module Minitest
2
+ module Reporters
3
+ module ANSI
4
+ module Code
5
+
6
+ def self.color?
7
+ return false if ENV['MINITEST_REPORTERS_MONO']
8
+ color_terminal = ENV['TERM'].to_s.downcase.include?("color")
9
+ $stdout.tty? || color_terminal
10
+ end
11
+
12
+ if color?
13
+ require 'ansi/code'
14
+
15
+ include ::ANSI::Code
16
+ extend ::ANSI::Code
17
+ else
18
+ def black(s = nil)
19
+ block_given? ? yield : s
20
+ end
21
+
22
+ %w[ red green yellow blue magenta cyan white ].each do |color|
23
+ alias_method color, :black
24
+ end
25
+
26
+ extend self
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -1,117 +1,119 @@
1
- module Minitest
2
- module Reporters
3
- class BaseReporter < Minitest::StatisticsReporter
4
- attr_accessor :tests
5
-
6
- def initialize(options={})
7
- super($stdout, options)
8
- self.tests = []
9
- end
10
-
11
- def add_defaults(defaults)
12
- self.options = defaults.merge(options)
13
- end
14
-
15
- # called by our own before hooks
16
- def before_test(test)
17
- last_test = tests.last
18
-
19
- # Minitest broke API between 5.10 and 5.11 this gets around Result object
20
- if last_test.respond_to? :klass
21
- suite_changed = last_test.klass != test.class.name
22
- else
23
- suite_changed = last_test.class != test.class
24
- end
25
-
26
- if suite_changed
27
- after_suite(last_test.class) if last_test
28
- before_suite(test.class)
29
- end
30
- end
31
-
32
- def record(test)
33
- super
34
- tests << test
35
- end
36
-
37
- # called by our own after hooks
38
- def after_test(test)
39
- end
40
-
41
- def report
42
- super
43
- after_suite(tests.last.class)
44
- end
45
-
46
- protected
47
-
48
- def after_suite(test)
49
- end
50
-
51
- def before_suite(test)
52
- end
53
-
54
- def result(test)
55
- if test.error?
56
- :error
57
- elsif test.skipped?
58
- :skip
59
- elsif test.failure
60
- :fail
61
- else
62
- :pass
63
- end
64
- end
65
-
66
- def test_class(result)
67
- if result.respond_to? :klass
68
- result.klass
69
- else
70
- result.class
71
- end
72
- end
73
-
74
- def print_colored_status(test)
75
- if test.passed?
76
- print(green { pad_mark( result(test).to_s.upcase ) })
77
- elsif test.skipped?
78
- print(yellow { pad_mark( result(test).to_s.upcase ) })
79
- else
80
- print(red { pad_mark( result(test).to_s.upcase ) })
81
- end
82
- end
83
-
84
- def total_time
85
- super || Minitest::Reporters.clock_time - start_time
86
- end
87
-
88
- def total_count
89
- options[:total_count]
90
- end
91
-
92
- def filter_backtrace(backtrace)
93
- Minitest.filter_backtrace(backtrace)
94
- end
95
-
96
- def puts(*args)
97
- io.puts(*args)
98
- end
99
-
100
- def print(*args)
101
- io.print(*args)
102
- end
103
-
104
- def print_info(e, name=true)
105
- print "#{e.exception.class.to_s}: " if name
106
- e.message.each_line { |line| print_with_info_padding(line) }
107
-
108
- # When e is a Minitest::UnexpectedError, the filtered backtrace is already part of the message printed out
109
- # by the previous line. In that case, and that case only, skip the backtrace output.
110
- unless e.is_a?(MiniTest::UnexpectedError)
111
- trace = filter_backtrace(e.backtrace)
112
- trace.each { |line| print_with_info_padding(line) }
113
- end
114
- end
115
- end
116
- end
117
- end
1
+ module Minitest
2
+ module Reporters
3
+ class BaseReporter < Minitest::StatisticsReporter
4
+ attr_accessor :tests
5
+
6
+ def initialize(options={})
7
+ super($stdout, options)
8
+ self.tests = []
9
+ end
10
+
11
+ def add_defaults(defaults)
12
+ self.options = defaults.merge(options)
13
+ end
14
+
15
+ # called by our own before hooks
16
+ def before_test(test)
17
+ last_test = tests.last
18
+ suite_changed = test_class(last_test) != test.class
19
+
20
+ if suite_changed
21
+ after_suite(test_class(last_test)) if last_test
22
+ before_suite(test.class)
23
+ end
24
+ end
25
+
26
+ def record(test)
27
+ super
28
+ tests << test
29
+ end
30
+
31
+ # called by our own after hooks
32
+ def after_test(test)
33
+ end
34
+
35
+ def report
36
+ super
37
+ after_suite(test_class(tests.last))
38
+ end
39
+
40
+ protected
41
+
42
+ def after_suite(test)
43
+ end
44
+
45
+ def before_suite(test)
46
+ end
47
+
48
+ def result(test)
49
+ if test.error?
50
+ :error
51
+ elsif test.skipped?
52
+ :skip
53
+ elsif test.failure
54
+ :fail
55
+ else
56
+ :pass
57
+ end
58
+ end
59
+
60
+ def test_class(result)
61
+ if result.respond_to?(:klass) && result.klass
62
+ load_constant(result.klass)
63
+ else
64
+ result.class
65
+ end
66
+ end
67
+
68
+ def print_colored_status(test)
69
+ if test.passed?
70
+ print(green { pad_mark( result(test).to_s.upcase ) })
71
+ elsif test.skipped?
72
+ print(yellow { pad_mark( result(test).to_s.upcase ) })
73
+ else
74
+ print(red { pad_mark( result(test).to_s.upcase ) })
75
+ end
76
+ end
77
+
78
+ def total_time
79
+ super || Minitest::Reporters.clock_time - start_time
80
+ end
81
+
82
+ def total_count
83
+ options[:total_count]
84
+ end
85
+
86
+ def filter_backtrace(backtrace)
87
+ Minitest.filter_backtrace(backtrace)
88
+ end
89
+
90
+ def puts(*args)
91
+ io.puts(*args)
92
+ end
93
+
94
+ def print(*args)
95
+ io.print(*args)
96
+ end
97
+
98
+ def print_info(e, name=true)
99
+ print "#{e.exception.class.to_s}: " if name
100
+ e.message.each_line { |line| print_with_info_padding(line) }
101
+
102
+ # When e is a Minitest::UnexpectedError, the filtered backtrace is already part of the message printed out
103
+ # by the previous line. In that case, and that case only, skip the backtrace output.
104
+ unless e.is_a?(MiniTest::UnexpectedError)
105
+ trace = filter_backtrace(e.backtrace)
106
+ trace.each { |line| print_with_info_padding(line) }
107
+ end
108
+ end
109
+
110
+ # This method is to be version compatible with ruby 1.X. In these
111
+ # versions constant lookup was not namespace aware
112
+ def load_constant(name)
113
+ name.to_s.split('::').inject(Object) do |namespace, const_name|
114
+ namespace.const_get(const_name)
115
+ end
116
+ end
117
+ end
118
+ end
119
+ end