minitest-heat 0.0.3 → 0.0.4

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: dc3d70999fca25317d7ff7a96b67cd2c6ee6f59970054b0eaec88c051581b855
4
- data.tar.gz: 1197c05fe06b12737b2c73c27d7266e986fcae22cd3957b3e64cd14e2e70295f
3
+ metadata.gz: dbfeed7b313b60332751ad13c01750b56452e6cac80f98346d4f7233ae807cef
4
+ data.tar.gz: 7a734d467343b7da882c8a5f62e1005664ea9b2ab889d766416d8f21fce2299b
5
5
  SHA512:
6
- metadata.gz: 207f670e0e27dedb872c8251e3890043955c60b6dd6e7dbafce1ba11fd9de5dde20ecf902ac0afd7fa5338d846afa9bc0c2f498df1ca5cdf83b964865792075f
7
- data.tar.gz: c7d3219eb7c7d357a6bdeb82695356f2b56f1bc0f617ed9a9719c3c8227ca9b9bbf0c4929c14d75eed60ce6eade8552f693ad689d6b71c057fc08015a3d38828
6
+ metadata.gz: '07468b2090eef7a6475382db46e9bc150d2fc30e54d54d6744c0c12d6c33364f6d39aff6938baf4647c0e64fe7c754d0c1ad8b42aebf7b87e8edce8a1c35542f'
7
+ data.tar.gz: f1f961dc9bcf258d09fec7184dc0cb778d5b9fbc865ad2ed2c9d2f68628c4329990febc45b41770582826ab26576236c41657ced44c0ddb494b1b7fb71403c38
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- minitest-heat (0.0.3)
4
+ minitest-heat (0.0.4)
5
5
  minitest
6
6
 
7
7
  GEM
@@ -8,7 +8,20 @@ module Minitest
8
8
  class Issue
9
9
  extend Forwardable
10
10
 
11
- SLOW_THRESHOLD = 0.5
11
+ SLOW_THRESHOLDS = {
12
+ slow: 1.0,
13
+ painful: 3.0
14
+ }
15
+
16
+ MARKERS = {
17
+ success: '·',
18
+ slow: '–',
19
+ painful: '—',
20
+ broken: 'B',
21
+ error: 'E',
22
+ skipped: 'S',
23
+ failure: 'F',
24
+ }
12
25
 
13
26
  SHARED_SYMBOLS = {
14
27
  spacer: ' · ',
@@ -52,6 +65,8 @@ module Minitest
52
65
  :skipped
53
66
  elsif !passed?
54
67
  :failure
68
+ elsif painful?
69
+ :painful
55
70
  elsif slow?
56
71
  :slow
57
72
  else
@@ -59,8 +74,16 @@ module Minitest
59
74
  end
60
75
  end
61
76
 
77
+ def hit?
78
+ !passed? || slow?
79
+ end
80
+
62
81
  def slow?
63
- time > SLOW_THRESHOLD
82
+ time >= SLOW_THRESHOLDS[:slow]
83
+ end
84
+
85
+ def painful?
86
+ time >= SLOW_THRESHOLDS[:painful]
64
87
  end
65
88
 
66
89
  def in_test?
@@ -111,14 +134,7 @@ module Minitest
111
134
  end
112
135
 
113
136
  def marker
114
- case type
115
- when :broken then 'B'
116
- when :error then 'E'
117
- when :skipped then 'S'
118
- when :failure then 'F'
119
- when :slow then '_'
120
- else '.'
121
- end
137
+ MARKERS.fetch(type.to_sym)
122
138
  end
123
139
 
124
140
  def summary
@@ -37,7 +37,7 @@ module Minitest
37
37
  def source_file
38
38
  return test_file if backtrace.empty?
39
39
 
40
- source_line = backtrace.final_project_location
40
+ source_line = backtrace.final_project_location || backtrace.final_location
41
41
 
42
42
  reduced_path("#{source_line.path}/#{source_line.file}")
43
43
  end
@@ -13,11 +13,12 @@ module Minitest
13
13
  # test is broken (i.e. raising an exception), that's a special sort of failure that would be
14
14
  # misleading. It doesn't represent a proper failure, but rather a test that doesn't work.
15
15
  WEIGHTS = {
16
- error: 3, # exceptions from source code have the highest liklihood of a ripple effect
17
- broken: 1, # broken tests won't have ripple effects but can't help if they can't run
18
- failure: 1, # failures are kind of the whole point, and they could have ripple effects
19
- skipped: 0, # skips aren't failures, but they shouldn't go ignored
20
- slow: 0 # slow tests aren't failures, but they shouldn't be ignored
16
+ error: 3, # exceptions from source code have the highest liklihood of a ripple effect
17
+ broken: 1, # broken tests won't have ripple effects but can't help if they can't run
18
+ failure: 1, # failures are kind of the whole point, and they could have ripple effects
19
+ skipped: 0, # skips aren't failures, but they shouldn't go ignored
20
+ painful: 0, # slow tests aren't failures, but they shouldn't be ignored
21
+ slow: 0,
21
22
  }
22
23
 
23
24
  def initialize
@@ -46,7 +47,7 @@ module Minitest
46
47
  files = {}
47
48
  @hits.each_pair do |filename, details|
48
49
  # Can't really be a "hot spot" with just a single issue
49
- next unless details[:total] > 1
50
+ next unless details[:weight] > 1
50
51
 
51
52
  files[filename] = details[:weight]
52
53
  end
@@ -58,13 +58,12 @@ module Minitest
58
58
 
59
59
  def style_components
60
60
  {
61
- success_bold: %i[bold green],
62
61
  success: %i[default green],
63
- slow: %i[default green],
62
+ slow: %i[bold green],
64
63
  error: %i[bold red],
65
64
  broken: %i[bold red],
66
65
  failure: %i[default red],
67
- skipped: %i[bold yellow],
66
+ skipped: %i[default yellow],
68
67
  warning_light: %i[light yellow],
69
68
  source: %i[italic default],
70
69
  bold: %i[bold default],
@@ -127,7 +126,6 @@ module Minitest
127
126
  when 'B' then text(:failure, value)
128
127
  when 'F' then text(:failure, value)
129
128
  when 'S' then text(:skipped, value)
130
- when '_' then text(:success, value)
131
129
  else text(:success, value)
132
130
  end
133
131
  end
@@ -165,7 +163,7 @@ module Minitest
165
163
  text(:broken, 'B' * values[:broken].size) if values[:broken]&.any?
166
164
  text(:failure, 'F' * values[:failure].size) if values[:failure]&.any?
167
165
  text(:skipped, 'S' * values[:skipped].size) if values[:skipped]&.any?
168
- text(:muted, ' ')
166
+ text(:muted, ' ') if values[:error]&.any? || values[:broken]&.any? || values[:failure]&.any? || values[:skipped]&.any?
169
167
 
170
168
  text(:muted, "#{path.delete_prefix('/')}")
171
169
  text(:default, "#{filename}")
@@ -49,8 +49,8 @@ module Minitest
49
49
  (assertion_count / total_time).round(2)
50
50
  end
51
51
 
52
- def issues?
53
- errors? || failures? || skips?
52
+ def problems?
53
+ errors? || brokens? || failures? || skips?
54
54
  end
55
55
 
56
56
  def errors
@@ -93,19 +93,13 @@ module Minitest
93
93
  skips.any?
94
94
  end
95
95
 
96
- def count(result)
96
+ def record(issue)
97
97
  @test_count += 1
98
- @assertion_count += result.assertions
99
- @success_count += 1 if result.passed?
100
- end
101
-
102
- def record_issue(result)
103
- issue = Heat::Issue.new(result)
98
+ @assertion_count += issue.result.assertions
99
+ @success_count += 1 if issue.result.passed?
104
100
 
105
101
  @issues[issue.type] ||= []
106
102
  @issues[issue.type] << issue
107
-
108
- issue
109
103
  end
110
104
  end
111
105
  end
@@ -1,5 +1,5 @@
1
1
  module Minitest
2
2
  module Heat
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
@@ -59,14 +59,13 @@ module Minitest
59
59
  # Minitest::Result source:
60
60
  # https://github.com/seattlerb/minitest/blob/f4f57afaeb3a11bd0b86ab0757704cb78db96cf4/lib/minitest.rb#L504
61
61
  def record(result)
62
- @results.count(result)
63
- if !result.passed? || result.time > ::Minitest::Heat::Issue::SLOW_THRESHOLD
64
- issue = @results.record_issue(result)
65
- @map.add(*issue.to_hit)
66
- output.marker(issue.marker)
67
- else
68
- output.marker(result.result_code)
69
- end
62
+ issue = Heat::Issue.new(result)
63
+
64
+ @results.record(issue)
65
+
66
+ @map.add(*issue.to_hit) if issue.hit?
67
+
68
+ output.marker(issue.marker)
70
69
  end
71
70
 
72
71
  # Outputs the summary of the run.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest-heat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Garrett Dimon
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-08-30 00:00:00.000000000 Z
11
+ date: 2021-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest