minitest-heat 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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