minitest-reporters 1.1.6 → 1.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/lib/minitest/reporters/ansi.rb +1 -0
- data/lib/minitest/reporters/mean_time_reporter.rb +95 -16
- data/lib/minitest/reporters/version.rb +1 -1
- data/test/test_helper.rb +1 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 47b21650aa917c323c0dda549bbf596f3146f390
|
4
|
+
data.tar.gz: 178821e133b2c7472df9a37c800f681078f3c636
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9014a80d115ad6531f6933c891ae9fc910442ca3a759e7432ff145f72829240ca1fca5f9aac9ebd0b57b52e6a629131ab900f9991faed835f15653e57c82360
|
7
|
+
data.tar.gz: fa0b84409d297219122aea2b5f55496127e250ac28400faffd4a38439fd44cbbc9d8a319f4905cd3ae744e6384b6a70eae3b45292ade68651b9df67ffe639dab
|
data/README.md
CHANGED
@@ -45,6 +45,7 @@ Minitest::Reporters::ProgressReporter # => Fuubar-like output with a progress ba
|
|
45
45
|
Minitest::Reporters::RubyMateReporter # => Simple reporter designed for RubyMate
|
46
46
|
Minitest::Reporters::RubyMineReporter # => Reporter designed for RubyMine IDE and TeamCity CI server
|
47
47
|
Minitest::Reporters::JUnitReporter # => JUnit test reporter designed for JetBrains TeamCity
|
48
|
+
Minitest::Reporters::MeanTimeReporter # => Produces a report summary showing the slowest running tests
|
48
49
|
```
|
49
50
|
|
50
51
|
Options can be passed to these reporters at construction-time, e.g. to force
|
@@ -23,6 +23,9 @@ module Minitest
|
|
23
23
|
#
|
24
24
|
class MeanTimeReporter < Minitest::Reporters::DefaultReporter
|
25
25
|
|
26
|
+
class InvalidOrder < StandardError; end
|
27
|
+
class InvalidSortColumn < StandardError; end
|
28
|
+
|
26
29
|
# Reset the statistics file for this reporter. Called via a rake task:
|
27
30
|
#
|
28
31
|
# rake reset_statistics
|
@@ -37,6 +40,13 @@ module Minitest
|
|
37
40
|
# by description. Defaults to '/tmp/minitest_reporters_previous_run'.
|
38
41
|
# @option report_filename [String] Contains the parsed results for the
|
39
42
|
# last test run. Defaults to '/tmp/minitest_reporters_report'.
|
43
|
+
# @option show_count [Fixnum] The number of tests to show in the report
|
44
|
+
# summary at the end of the test run. Default is 15.
|
45
|
+
# @option sort_column [Symbol] One of :avg (default), :min, :max, :last.
|
46
|
+
# Determines the column by which the report summary is sorted.
|
47
|
+
# @option order [Symbol] One of :desc (default), or :asc. By default the
|
48
|
+
# report summary is listed slowest to fastest (:desc). :asc will order
|
49
|
+
# the report summary as fastest to slowest.
|
40
50
|
# @return [Minitest::Reporters::MeanTimeReporter]
|
41
51
|
def initialize(options = {})
|
42
52
|
super
|
@@ -94,7 +104,9 @@ module Minitest
|
|
94
104
|
# run.
|
95
105
|
def defaults
|
96
106
|
{
|
107
|
+
order: :desc,
|
97
108
|
show_count: 15,
|
109
|
+
sort_column: :avg,
|
98
110
|
previous_runs_filename: '/tmp/minitest_reporters_previous_run',
|
99
111
|
report_filename: '/tmp/minitest_reporters_report',
|
100
112
|
}
|
@@ -104,7 +116,9 @@ module Minitest
|
|
104
116
|
#
|
105
117
|
# @return [String]
|
106
118
|
def report_title
|
107
|
-
"\n\e[4mMinitest Reporters: Mean Time Report\e[24m
|
119
|
+
"\n\e[4mMinitest Reporters: Mean Time Report\e[24m " \
|
120
|
+
"(Samples: #{samples}, Order: #{sort_column.inspect} " \
|
121
|
+
"#{order.inspect})\n"
|
108
122
|
end
|
109
123
|
|
110
124
|
# The report itself. Displays statistics about all runs, ideal for use
|
@@ -113,22 +127,43 @@ module Minitest
|
|
113
127
|
#
|
114
128
|
# @return [String]
|
115
129
|
def report_body
|
130
|
+
order_sorted_body.each_with_object([]) do |result, obj|
|
131
|
+
rating = rate(result[:last], result[:min], result[:max])
|
132
|
+
|
133
|
+
obj << "#{avg_label} #{result[:avg]} " \
|
134
|
+
"#{min_label} #{result[:min]} " \
|
135
|
+
"#{max_label} #{result[:max]} " \
|
136
|
+
"#{run_label(rating)} #{result[:last]} " \
|
137
|
+
"#{des_label} #{result[:desc]}\n"
|
138
|
+
end.join
|
139
|
+
end
|
140
|
+
|
141
|
+
# @return [String] All of the column-sorted results sorted by the :order
|
142
|
+
# option. (Defaults to :desc).
|
143
|
+
def order_sorted_body
|
144
|
+
if desc?
|
145
|
+
column_sorted_body.reverse
|
146
|
+
|
147
|
+
elsif asc?
|
148
|
+
column_sorted_body
|
149
|
+
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
# @return [Array<Hash<Symbol => String>>] All of the results sorted by
|
154
|
+
# the :sort_column option. (Defaults to :avg).
|
155
|
+
def column_sorted_body
|
116
156
|
previous_run.each_with_object([]) do |(description, timings), obj|
|
117
157
|
size = Array(timings).size
|
118
158
|
sum = Array(timings).inject { |total, x| total + x }
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
"#{min_label} #{min} " \
|
128
|
-
"#{max_label} #{max} " \
|
129
|
-
"#{run_label(rating)} #{run} " \
|
130
|
-
"#{des_label} #{description}\n"
|
131
|
-
end.sort.reverse.join
|
159
|
+
obj << {
|
160
|
+
avg: (sum / size).round(9).to_s.ljust(12),
|
161
|
+
min: Array(timings).min.round(9).to_s.ljust(12),
|
162
|
+
max: Array(timings).max.round(9).to_s.ljust(12),
|
163
|
+
last: Array(timings).last.round(9).to_s.ljust(12),
|
164
|
+
desc: description,
|
165
|
+
}
|
166
|
+
end.sort_by { |k| k[sort_column] }
|
132
167
|
end
|
133
168
|
|
134
169
|
# @return [Hash]
|
@@ -215,9 +250,11 @@ module Minitest
|
|
215
250
|
end
|
216
251
|
|
217
252
|
# Creates a new report file in the 'report_filename'. This file contains
|
218
|
-
# a line for each test of the following example format:
|
253
|
+
# a line for each test of the following example format: (this is a single
|
254
|
+
# line despite explicit wrapping)
|
219
255
|
#
|
220
|
-
# Avg: 0.0555555 Min: 0.0498765 Max: 0.0612345 Last: 0.0499421
|
256
|
+
# Avg: 0.0555555 Min: 0.0498765 Max: 0.0612345 Last: 0.0499421
|
257
|
+
# Description: The test name
|
221
258
|
#
|
222
259
|
# Note however the timings are to 9 decimal places, and padded to 12
|
223
260
|
# characters and each label is coloured, Avg (yellow), Min (green),
|
@@ -288,6 +325,48 @@ module Minitest
|
|
288
325
|
end
|
289
326
|
end
|
290
327
|
|
328
|
+
# @return [Boolean] Whether the given :order option is :asc.
|
329
|
+
def asc?
|
330
|
+
order == :asc
|
331
|
+
end
|
332
|
+
|
333
|
+
# @return [Boolean] Whether the given :order option is :desc (default).
|
334
|
+
def desc?
|
335
|
+
order == :desc
|
336
|
+
end
|
337
|
+
|
338
|
+
# @raise [Minitest::Reporters::MeanTimeReporter::InvalidOrder]
|
339
|
+
# When the given :order option is invalid.
|
340
|
+
# @return [Symbol] The :order option, or by default; :desc.
|
341
|
+
def order
|
342
|
+
orders = [:desc, :asc]
|
343
|
+
|
344
|
+
if orders.include?(options[:order])
|
345
|
+
options[:order]
|
346
|
+
|
347
|
+
else
|
348
|
+
fail Minitest::Reporters::MeanTimeReporter::InvalidOrder,
|
349
|
+
"`:order` option must be one of #{orders.inspect}."
|
350
|
+
|
351
|
+
end
|
352
|
+
end
|
353
|
+
|
354
|
+
# @raise [Minitest::Reporters::MeanTimeReporter::InvalidSortColumn]
|
355
|
+
# When the given :sort_column option is invalid.
|
356
|
+
# @return [Symbol] The :sort_column option, or by default; :avg.
|
357
|
+
def sort_column
|
358
|
+
sort_columns = [:avg, :min, :max, :last]
|
359
|
+
|
360
|
+
if sort_columns.include?(options[:sort_column])
|
361
|
+
options[:sort_column]
|
362
|
+
|
363
|
+
else
|
364
|
+
fail Minitest::Reporters::MeanTimeReporter::InvalidSortColumn,
|
365
|
+
"`:sort_column` option must be one of #{sort_columns.inspect}."
|
366
|
+
|
367
|
+
end
|
368
|
+
end
|
369
|
+
|
291
370
|
end
|
292
371
|
end
|
293
372
|
end
|
data/test/test_helper.rb
CHANGED
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.1.
|
4
|
+
version: 1.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Kern
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|