minitest-reporters 1.3.2 → 1.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6df7029f8bdc85161a699f171c63188294697f30c9f30d2cc5e1c037327f89b6
4
- data.tar.gz: 33152f2bb9e62f0fc82b75ecfbf5b8828841520bee19c07472c87cb42ed5d013
3
+ metadata.gz: fd189c42b4c7adcec48a0ce3db5a5abe59dd6d766ef6b9d69b7bca10a305a8ba
4
+ data.tar.gz: 63c9745d9d6a1de4492434dea58ecf37b78ce3f5df2bdc0dc159915914dc2235
5
5
  SHA512:
6
- metadata.gz: e60635e176c44f1504139d257ea3e64f902e7af7776d5ff0d9f7609c3f615af69e3e8656ff90152dc5867efa78697e2360328b3d0933a40af3df5b14a55beb8a
7
- data.tar.gz: 877e5258ea73baaf4c1f9016bdc5f8d2b3aecc124ec6f69d760b6707d7e6e98da52e02a01b8989101511dd1d81235dd5d86e33e0b0acd65a7a1a92810c9940a2
6
+ metadata.gz: 676d1065ac7070eb24a1824f8fc914e243281538ad0c8c7c6db24cb5529e395e1992f685562f061628e50ee394d0ce47f09e1f54d9350034be2f3130765288a1
7
+ data.tar.gz: e6c1ecb07353173d26b3546af1591ec63d1684d3bb66c4740b3b52172ee8ec701e42a831cae19cd2d7263401d61b5e7d96bbbcbe5087b21dbbfb7fccb4410c0a
@@ -13,7 +13,7 @@ Lint:
13
13
 
14
14
  Metrics:
15
15
  Severity: refactor
16
- Enabled: true
16
+ Enabled: false
17
17
 
18
18
  Metrics/LineLength:
19
19
  Severity: convention
@@ -36,15 +36,37 @@ Security:
36
36
 
37
37
  #todo: enable
38
38
  Style:
39
- Enabled: false
39
+ Enabled: true
40
40
 
41
41
  Style/FormatStringToken:
42
42
  Enabled: false
43
43
 
44
+ Style/IfUnlessModifier:
45
+ Enabled: false
46
+
44
47
  #todo: enable
45
48
  Style/StringLiterals:
46
49
  Enabled: false
47
50
 
51
+ Style/TrailingCommaInHashLiteral:
52
+ EnforcedStyleForMultiline: comma
53
+
54
+ #todo: enable
55
+ Style/HashSyntax:
56
+ Enabled: false
57
+
58
+ #todo: enable
59
+ Style/FormatString:
60
+ Enabled: false
61
+
62
+ #todo: enable
63
+ Style/ClassVars:
64
+ Enabled: false
65
+
66
+ #todo: enable
67
+ Style/Alias:
68
+ Enabled: false
69
+
48
70
  Style/Documentation:
49
71
  Enabled: false
50
72
 
@@ -1,4 +1,9 @@
1
- ### [dev](https://github.com/kern/minitest-reporters/compare/v1.3.2...master)
1
+ ### [dev](https://github.com/kern/minitest-reporters/compare/v1.3.3...master)
2
+
3
+ ### [1.3.3](https://github.com/kern/minitest-reporters/compare/v1.3.2...v1.3.3)
4
+
5
+ * fixed problem with default report paths for MeanTimeReporter [#269](https://github.com/kern/minitest-reporters/pull/269)
6
+ contributed by [duonoid](https://github.com/duonoid)
2
7
 
3
8
  ### [1.3.2](https://github.com/kern/minitest-reporters/compare/v1.3.2.beta2...v1.3.2)
4
9
 
@@ -28,10 +28,10 @@ module Minitest
28
28
 
29
29
  suite_changed = last_test.nil? || last_test.name != test.class.name
30
30
 
31
- if suite_changed
32
- after_suite(last_test) if last_test
33
- before_suite(test.class)
34
- end
31
+ return unless suite_changed
32
+
33
+ after_suite(last_test) if last_test
34
+ before_suite(test.class)
35
35
  end
36
36
 
37
37
  def record(test)
@@ -40,8 +40,7 @@ module Minitest
40
40
  end
41
41
 
42
42
  # called by our own after hooks
43
- def after_test(_test)
44
- end
43
+ def after_test(_test); end
45
44
 
46
45
  def report
47
46
  super
@@ -50,11 +49,9 @@ module Minitest
50
49
 
51
50
  protected
52
51
 
53
- def after_suite(test)
54
- end
52
+ def after_suite(test); end
55
53
 
56
- def before_suite(test)
57
- end
54
+ def before_suite(test); end
58
55
 
59
56
  def result(test)
60
57
  if test.error?
@@ -115,10 +112,10 @@ module Minitest
115
112
 
116
113
  # When e is a Minitest::UnexpectedError, the filtered backtrace is already part of the message printed out
117
114
  # by the previous line. In that case, and that case only, skip the backtrace output.
118
- unless e.is_a?(MiniTest::UnexpectedError)
119
- trace = filter_backtrace(e.backtrace)
120
- trace.each { |line| print_with_info_padding(line) }
121
- end
115
+ return if e.is_a?(MiniTest::UnexpectedError)
116
+
117
+ trace = filter_backtrace(e.backtrace)
118
+ trace.each { |line| print_with_info_padding(line) }
122
119
  end
123
120
  end
124
121
  end
@@ -62,7 +62,7 @@ module Minitest
62
62
  :erb_template => "#{File.dirname(__FILE__)}/../templates/index.html.erb",
63
63
  :reports_dir => 'test/html_reports',
64
64
  :mode => :safe,
65
- :output_filename => 'index.html'
65
+ :output_filename => 'index.html',
66
66
  }
67
67
 
68
68
  settings = defaults.merge(args)
@@ -124,8 +124,8 @@ module Minitest
124
124
  show_progress: true,
125
125
  show_all_runs: true,
126
126
  sort_column: :avg,
127
- previous_runs_filename: Dir.tmpdir + '/minitest_reporters_previous_run',
128
- report_filename: Dir.tmpdir + 'minitest_reporters_report'
127
+ previous_runs_filename: File.join(Dir.tmpdir, 'minitest_reporters_previous_run'),
128
+ report_filename: File.join(Dir.tmpdir, 'minitest_reporters_report'),
129
129
  }
130
130
  end
131
131
 
@@ -13,20 +13,20 @@ module Minitest
13
13
  include RelativePosition
14
14
  include ANSI::Code
15
15
 
16
- PROGRESS_MARK = '='
16
+ PROGRESS_MARK = '='.freeze
17
17
 
18
18
  def initialize(options = {})
19
19
  super
20
20
  @detailed_skip = options.fetch(:detailed_skip, true)
21
21
 
22
- @progress = ProgressBar.create({
22
+ @progress = ProgressBar.create(
23
23
  total: total_count,
24
24
  starting_at: count,
25
25
  progress_mark: green(PROGRESS_MARK),
26
26
  remainder_mark: ' ',
27
27
  format: options.fetch(:format, ' %C/%c: [%B] %p%% %a, %e'),
28
28
  autostart: false
29
- })
29
+ )
30
30
  end
31
31
 
32
32
  def start
@@ -1,5 +1,5 @@
1
1
  module Minitest
2
2
  module Reporters
3
- VERSION = '1.3.2'.freeze
3
+ VERSION = '1.3.3'.freeze
4
4
  end
5
5
  end
@@ -5,7 +5,7 @@ module MinitestReportersTest
5
5
  def test_all_failures_are_displayed
6
6
  fixtures_directory = File.expand_path('../../../fixtures', __FILE__)
7
7
  test_filename = File.join(fixtures_directory, 'progress_test.rb')
8
- output = `ruby #{test_filename} 2>&1`
8
+ output = `#{ruby_executable} #{test_filename} 2>&1`
9
9
  assert_match 'ERROR["test_error"', output, 'Errors should be displayed'
10
10
  assert_match 'FAIL["test_failure"', output, 'Failures should be displayed'
11
11
  assert_match 'SKIP["test_skip', output, 'Skipped tests should be displayed'
@@ -13,7 +13,7 @@ module MinitestReportersTest
13
13
  def test_skipped_tests_are_not_displayed
14
14
  fixtures_directory = File.expand_path('../../../fixtures', __FILE__)
15
15
  test_filename = File.join(fixtures_directory, 'progress_detailed_skip_test.rb')
16
- output = `ruby #{test_filename} 2>&1`
16
+ output = `#{ruby_executable} #{test_filename} 2>&1`
17
17
  assert_match 'ERROR["test_error"', output, 'Errors should be displayed'
18
18
  assert_match 'FAIL["test_failure"', output, 'Failures should be displayed'
19
19
  refute_match 'SKIP["test_skip', output, 'Skipped tests should not be displayed'
@@ -21,14 +21,20 @@ module MinitestReportersTest
21
21
  def test_progress_works_with_filter_and_specs
22
22
  fixtures_directory = File.expand_path('../../../fixtures', __FILE__)
23
23
  test_filename = File.join(fixtures_directory, 'spec_test.rb')
24
- output = `ruby #{test_filename} -n /length/ 2>&1`
24
+ output = `#{ruby_executable} #{test_filename} -n /length/ 2>&1`
25
25
  refute_match '0 out of 0', output, 'Progress should not puts a warning'
26
26
  end
27
27
  def test_progress_works_with_strict_filter
28
28
  fixtures_directory = File.expand_path('../../../fixtures', __FILE__)
29
29
  test_filename = File.join(fixtures_directory, 'spec_test.rb')
30
- output = `ruby #{test_filename} -n /^test_0001_works$/ 2>&1`
30
+ output = `#{ruby_executable} #{test_filename} -n /^test_0001_works$/ 2>&1`
31
31
  refute_match '0 out of 0', output, 'Progress should not puts a warning'
32
32
  end
33
+
34
+ private
35
+
36
+ def ruby_executable
37
+ defined?(JRUBY_VERSION) ? 'jruby' : 'ruby'
38
+ end
33
39
  end
34
40
  end
@@ -1,10 +1,18 @@
1
1
  require_relative '../../test_helper'
2
+ require "ostruct"
2
3
 
3
4
  module MinitestReportersTest
4
5
  class MeanTimeReporterUnitTest < Minitest::Test
5
6
  def setup
7
+ @test_data = []
8
+ @test_data << { name: 'MIDDLE', prev_time: 5.0, cur_time: 5.0 }
9
+ @test_data << { name: 'MIN_FAST', prev_time: 0.5, cur_time: 3.5 }
10
+ @test_data << { name: 'MIN_SLOW', prev_time: 10.5, cur_time: 10.5 }
11
+ @test_data << { name: 'MAX_FAST', prev_time: 1.2, cur_time: 0.9 }
12
+ @test_data << { name: 'MAX_SLOW', prev_time: 16.3, cur_time: 6.3 }
13
+ @test_data << { name: 'AVG_FAST', prev_time: 1.3, cur_time: 0.65 }
14
+ @test_data << { name: 'AVG_SLOW', prev_time: 10.2, cur_time: 14.2 }
6
15
  configure_report_paths
7
- previous_test_run
8
16
  end
9
17
 
10
18
  def teardown
@@ -12,8 +20,17 @@ module MinitestReportersTest
12
20
  File.delete(@report_file_path) if File.exist?(@report_file_path)
13
21
  end
14
22
 
23
+ def test_defaults
24
+ subject = Minitest::Reporters::MeanTimeReporter.new.send(:defaults)
25
+
26
+ expected_prefix = "#{Dir.tmpdir}#{File::Separator}"
27
+ assert_match expected_prefix, subject[:previous_runs_filename]
28
+ assert_match expected_prefix, subject[:report_filename]
29
+ end
30
+
15
31
  def test_sorts_avg_numerically
16
- report_output = generate_report(:avg)
32
+ prev_output = generate_report(:avg, :prev_time)
33
+ report_output = generate_report(:avg, :cur_time)
17
34
 
18
35
  expected_order = [
19
36
  'AVG_SLOW',
@@ -24,11 +41,12 @@ module MinitestReportersTest
24
41
  'MAX_FAST',
25
42
  'AVG_FAST'
26
43
  ]
27
- verify_result_order(report_output, expected_order)
44
+ verify_result_order(report_output, expected_order, prev_output)
28
45
  end
29
46
 
30
47
  def test_sorts_min_numerically
31
- report_output = generate_report(:min)
48
+ prev_output = generate_report(:min, :prev_time)
49
+ report_output = generate_report(:min, :cur_time)
32
50
 
33
51
  expected_order = [
34
52
  'MIN_SLOW',
@@ -39,11 +57,12 @@ module MinitestReportersTest
39
57
  'AVG_FAST',
40
58
  'MIN_FAST'
41
59
  ]
42
- verify_result_order(report_output, expected_order)
60
+ verify_result_order(report_output, expected_order, prev_output)
43
61
  end
44
62
 
45
63
  def test_sorts_max_numerically
46
- report_output = generate_report(:max)
64
+ prev_output = generate_report(:max, :prev_time)
65
+ report_output = generate_report(:max, :cur_time)
47
66
 
48
67
  expected_order = [
49
68
  'MAX_SLOW',
@@ -54,11 +73,12 @@ module MinitestReportersTest
54
73
  'AVG_FAST',
55
74
  'MAX_FAST'
56
75
  ]
57
- verify_result_order(report_output, expected_order)
76
+ verify_result_order(report_output, expected_order, prev_output)
58
77
  end
59
78
 
60
79
  def test_sorts_last_numerically
61
- report_output = generate_report(:last)
80
+ prev_output = generate_report(:last, :prev_time)
81
+ report_output = generate_report(:last, :cur_time)
62
82
 
63
83
  expected_order = [
64
84
  'AVG_SLOW',
@@ -69,7 +89,7 @@ module MinitestReportersTest
69
89
  'MAX_FAST',
70
90
  'AVG_FAST'
71
91
  ]
72
- verify_result_order(report_output, expected_order)
92
+ verify_result_order(report_output, expected_order, prev_output)
73
93
  end
74
94
 
75
95
  private
@@ -80,27 +100,9 @@ module MinitestReportersTest
80
100
  Minitest::Reporters.stub(:clock_time, base_clock_time - run_time) do
81
101
  @reporter.before_suite(test_suite)
82
102
  end
83
- @reporter.after_suite(test_suite)
84
- end
85
-
86
- def previous_test_run
87
- @reporter = Minitest::Reporters::MeanTimeReporter.new(
88
- previous_runs_filename: @previous_run_path,
89
- report_filename: @report_file_path
90
- )
91
-
92
- simulate_suite_runtime('MIDDLE', 5.0)
93
- simulate_suite_runtime('MIN_FAST', 0.5)
94
- simulate_suite_runtime('MIN_SLOW', 10.5)
95
- simulate_suite_runtime('MAX_FAST', 1.2)
96
- simulate_suite_runtime('MAX_SLOW', 16.3)
97
- simulate_suite_runtime('AVG_FAST', 1.3)
98
- simulate_suite_runtime('AVG_SLOW', 10.2)
99
- @reporter.tests << Minitest::Test.new('Final')
100
- # Generate a "previous" run
101
- @reporter.io = StringIO.new
102
- @reporter.start
103
- @reporter.report
103
+ Minitest::Reporters.stub(:clock_time, base_clock_time) do
104
+ @reporter.after_suite(test_suite)
105
+ end
104
106
  end
105
107
 
106
108
  def configure_report_paths
@@ -114,20 +116,14 @@ module MinitestReportersTest
114
116
  report_file.delete
115
117
  end
116
118
 
117
- def generate_report(sort_column)
119
+ def generate_report(sort_column, time_name)
118
120
  # Reset the reporter for the test run
119
121
  @reporter = Minitest::Reporters::MeanTimeReporter.new(
120
122
  previous_runs_filename: @previous_run_path,
121
123
  report_filename: @report_file_path,
122
124
  sort_column: sort_column
123
125
  )
124
- simulate_suite_runtime('MIDDLE', 5.0)
125
- simulate_suite_runtime('MIN_FAST', 3.5)
126
- simulate_suite_runtime('MIN_SLOW', 10.5)
127
- simulate_suite_runtime('MAX_FAST', 0.9)
128
- simulate_suite_runtime('MAX_SLOW', 6.3)
129
- simulate_suite_runtime('AVG_FAST', 0.65)
130
- simulate_suite_runtime('AVG_SLOW', 14.2)
126
+ @test_data.each { |hash| simulate_suite_runtime(hash[:name], hash[time_name])}
131
127
  @reporter.tests << Minitest::Test.new('Final')
132
128
 
133
129
  report_output = StringIO.new
@@ -137,16 +133,22 @@ module MinitestReportersTest
137
133
  report_output
138
134
  end
139
135
 
140
- def verify_result_order(report_output, expected_order)
141
- report_output.rewind
142
- test_lines = report_output.read.split("\n")
143
- test_lines.select! { |line| line.start_with?('Avg:') }
136
+ def verify_result_order(report_output, expected_order, prev_output)
137
+ prev_lines = extract_test_lines(prev_output)
138
+ test_lines = extract_test_lines(report_output)
144
139
 
145
- # Exclude the final placeholder 0 second test from assertions
146
- test_lines.reject! { |line| line.end_with?('Minitest::Test') }
147
140
  actual_order = test_lines.map { |line| line.gsub(/.*Description: /, '') }
148
141
 
149
- assert_equal(expected_order, actual_order, "\n#{test_lines.join("\n")}")
142
+ assert_equal(expected_order, actual_order, "\nCurrent report:\n#{test_lines.join("\n")}\n\nPrevious report:\n#{prev_lines.join("\n")}")
143
+ end
144
+
145
+ def extract_test_lines(report_output)
146
+ report_output.rewind
147
+ test_lines = report_output.read.split("\n")
148
+ test_lines.select! {|line| line.start_with?('Avg:')}
149
+ # Exclude the final placeholder 0 second test from assertions
150
+ test_lines.reject! {|line| line.end_with?('Minitest::Test')}
151
+ test_lines
150
152
  end
151
153
  end
152
154
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest-reporters
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Kern
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-17 00:00:00.000000000 Z
11
+ date: 2018-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest