minitest-display 0.2.0.pre → 0.2.0.pre1
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.
- data/Gemfile +4 -3
- data/Gemfile.lock +11 -7
- data/Rakefile +0 -14
- data/lib/minitest/display.rb +84 -10
- data/minitest-display.gemspec +1 -1
- data/test/test_minitest-display.rb +61 -0
- metadata +2 -2
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -2,17 +2,21 @@ GEM
|
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
4
|
git (1.2.5)
|
5
|
-
jeweler (1.
|
6
|
-
bundler (~> 1.0
|
5
|
+
jeweler (1.8.4)
|
6
|
+
bundler (~> 1.0)
|
7
7
|
git (>= 1.2.5)
|
8
8
|
rake
|
9
|
-
|
10
|
-
|
9
|
+
rdoc
|
10
|
+
json (1.7.5)
|
11
|
+
minitest (4.3.3)
|
12
|
+
rake (10.0.2)
|
13
|
+
rdoc (3.12)
|
14
|
+
json (~> 1.4)
|
11
15
|
|
12
16
|
PLATFORMS
|
13
17
|
ruby
|
14
18
|
|
15
19
|
DEPENDENCIES
|
16
|
-
bundler (~> 1.0
|
17
|
-
jeweler (~> 1.5
|
18
|
-
minitest
|
20
|
+
bundler (~> 1.0)
|
21
|
+
jeweler (~> 1.5)
|
22
|
+
minitest (~> 4.3)
|
data/Rakefile
CHANGED
@@ -21,10 +21,6 @@ Jeweler::Tasks.new do |gem|
|
|
21
21
|
gem.description = %Q{Patches MiniTest to allow for an easily configurable output. For Ruby 1.9 :Datches MiniTest to allow for an easily configurable output. For Ruby 1.9 :D. Inspired by leftright, redgreen and other test output gems, with an emphasis on configuration and style}
|
22
22
|
gem.email = "aaron@quirkey.com"
|
23
23
|
gem.authors = ["Aaron Quint"]
|
24
|
-
# Include your dependencies below. Runtime dependencies are required when using your gem,
|
25
|
-
# and development dependencies are only needed for development (ie running rake tasks, tests, etc)
|
26
|
-
gem.add_runtime_dependency 'minitest', '~> 2.3'
|
27
|
-
# gem.add_development_dependency 'rspec', '> 1.2.3'
|
28
24
|
end
|
29
25
|
Jeweler::RubygemsDotOrgTasks.new
|
30
26
|
|
@@ -36,13 +32,3 @@ Rake::TestTask.new(:test) do |test|
|
|
36
32
|
end
|
37
33
|
|
38
34
|
task :default => :test
|
39
|
-
|
40
|
-
require 'rake/rdoctask'
|
41
|
-
Rake::RDocTask.new do |rdoc|
|
42
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
43
|
-
|
44
|
-
rdoc.rdoc_dir = 'rdoc'
|
45
|
-
rdoc.title = "minitest-display #{version}"
|
46
|
-
rdoc.rdoc_files.include('README*')
|
47
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
48
|
-
end
|
data/lib/minitest/display.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'minitest/unit'
|
2
|
+
|
1
3
|
class Hash
|
2
4
|
unless method_defined?(:deep_merge!)
|
3
5
|
|
@@ -18,7 +20,7 @@ end
|
|
18
20
|
|
19
21
|
module MiniTest
|
20
22
|
module Display
|
21
|
-
VERSION = '0.
|
23
|
+
VERSION = '0.2.0.pre1'
|
22
24
|
|
23
25
|
class << self
|
24
26
|
def options
|
@@ -116,12 +118,57 @@ module MiniTest
|
|
116
118
|
end
|
117
119
|
end
|
118
120
|
|
119
|
-
class MiniTest::Unit
|
120
|
-
|
121
|
-
def
|
121
|
+
class MiniTest::Display::Runner < MiniTest::Unit
|
122
|
+
|
123
|
+
def initialize(*args)
|
124
|
+
super
|
125
|
+
@recorders = []
|
126
|
+
end
|
127
|
+
|
128
|
+
# Add a recorder which for each test that has a `record`.
|
129
|
+
# Optionally can also have an:
|
130
|
+
#
|
131
|
+
# `record_tests_started`,
|
132
|
+
# `record_suite_started(suite)`,
|
133
|
+
# `record(suite, method, assertions, time, error)`
|
134
|
+
# `record_suite_finished(suite, assertions, time)`,
|
135
|
+
# `record_tests_finished(report, test_count, assertion_count, time)
|
136
|
+
#
|
137
|
+
# (Executed in that order)
|
138
|
+
#
|
139
|
+
def add_recorder(new_recorder)
|
140
|
+
new_recorder_instance = new_recorder.new(self)
|
141
|
+
@recorders << new_recorder_instance
|
142
|
+
end
|
143
|
+
|
144
|
+
def record_suite_started(suite)
|
145
|
+
run_recorder_method(:record_suite_started, suite)
|
146
|
+
end
|
147
|
+
|
148
|
+
def record_suite_finished(suite, assertions, time)
|
149
|
+
run_recorder_method(:record_suite_finished, suite)
|
150
|
+
end
|
151
|
+
|
152
|
+
def record_tests_started
|
153
|
+
run_recorder_method(:record_tests_started)
|
154
|
+
end
|
155
|
+
|
156
|
+
def record_tests_finished(report, test_count, assertion_count, time)
|
157
|
+
run_recorder_method(:record_tests_finished, report, test_count, assertion_count, time)
|
158
|
+
end
|
159
|
+
|
160
|
+
def record(suite, method, assertions, time, error)
|
161
|
+
run_recorder_method(:record, suite, method, assertions, time, error)
|
162
|
+
end
|
163
|
+
|
164
|
+
# Patched _run_anything
|
165
|
+
def _run_anything type
|
122
166
|
suites = TestCase.send "#{type}_suites"
|
123
167
|
return if suites.empty?
|
124
168
|
|
169
|
+
# PATCH
|
170
|
+
record_tests_started
|
171
|
+
# END
|
125
172
|
start = Time.now
|
126
173
|
|
127
174
|
puts
|
@@ -152,34 +199,49 @@ class MiniTest::Unit
|
|
152
199
|
|
153
200
|
puts
|
154
201
|
|
202
|
+
# PATCH
|
203
|
+
record_tests_finished(report, test_count, assertion_count, t)
|
204
|
+
# END
|
155
205
|
status
|
156
206
|
end
|
157
207
|
|
208
|
+
# Patched _run_suite
|
158
209
|
def _run_suite(suite, type)
|
159
|
-
|
210
|
+
header = "#{type}_suite_header"
|
211
|
+
suite_header = send(header, suite) if respond_to? header
|
212
|
+
|
213
|
+
# PATCH
|
160
214
|
if display.options[:suite_names] && display.printable_suite?(suite)
|
161
|
-
suite_header
|
215
|
+
suite_header ||= suite.to_s
|
162
216
|
print display.color("\n#{suite_header}#{display.options[:suite_divider]}", :suite)
|
163
217
|
end
|
218
|
+
# END
|
164
219
|
|
165
220
|
filter = options[:filter] || '/./'
|
166
221
|
filter = Regexp.new $1 if filter =~ /\/(.*)\//
|
167
222
|
|
168
|
-
|
223
|
+
# PATCH
|
224
|
+
wrap_at = display.options[:wrap_at] - suite_header.length if suite_header
|
169
225
|
wrap_count = wrap_at
|
170
226
|
|
227
|
+
record_suite_started(suite)
|
171
228
|
full_start_time = Time.now
|
172
229
|
@test_times ||= Hash.new { |h, k| h[k] = [] }
|
230
|
+
|
231
|
+
#END
|
173
232
|
assertions = suite.send("#{type}_methods").grep(filter).map { |method|
|
174
233
|
inst = suite.new method
|
175
234
|
inst._assertions = 0
|
176
235
|
|
177
236
|
print "#{suite}##{method} = " if @verbose
|
178
237
|
|
179
|
-
|
238
|
+
# PATCH
|
239
|
+
start_time = Time.now
|
240
|
+
# END
|
180
241
|
result = inst.run self
|
181
|
-
time = Time.now - @start_time
|
182
242
|
|
243
|
+
# PATCH
|
244
|
+
time = Time.now - start_time
|
183
245
|
@test_times[suite] << ["#{suite}##{method}", time]
|
184
246
|
|
185
247
|
print "%.2f s = " % time if @verbose
|
@@ -193,6 +255,7 @@ class MiniTest::Unit
|
|
193
255
|
else
|
194
256
|
result
|
195
257
|
end
|
258
|
+
|
196
259
|
puts if @verbose
|
197
260
|
|
198
261
|
wrap_count -= 1
|
@@ -206,6 +269,7 @@ class MiniTest::Unit
|
|
206
269
|
|
207
270
|
total_time = Time.now - full_start_time
|
208
271
|
|
272
|
+
record_suite_finished(suite, assertions, total_time)
|
209
273
|
if assertions.length > 0 && display.options[:suite_time]
|
210
274
|
print "\n#{' ' * suite_header.length}#{display.options[:suite_divider]}"
|
211
275
|
print "%.2f s" % total_time
|
@@ -234,7 +298,7 @@ class MiniTest::Unit
|
|
234
298
|
end
|
235
299
|
|
236
300
|
def display_slow_suites
|
237
|
-
times = @test_times.map { |suite, tests| [suite, tests.map(&:last).sum] }.sort { |a, b| b[1] <=> a[1] }
|
301
|
+
times = @test_times.map { |suite, tests| [suite, tests.map(&:last).inject {|sum, n| sum + n }] }.sort { |a, b| b[1] <=> a[1] }
|
238
302
|
puts "Slowest suites:"
|
239
303
|
times[0..display.options[:output_slow_suites].to_i].each do |suite, time|
|
240
304
|
puts "%.2f s\t#{suite}" % time
|
@@ -242,7 +306,17 @@ class MiniTest::Unit
|
|
242
306
|
end
|
243
307
|
|
244
308
|
private
|
309
|
+
def run_recorder_method(method, *args)
|
310
|
+
@recorders.each do |recorder|
|
311
|
+
if recorder.respond_to?(method)
|
312
|
+
recorder.send method, *args
|
313
|
+
end
|
314
|
+
end
|
315
|
+
end
|
316
|
+
|
245
317
|
def display
|
246
318
|
::MiniTest::Display
|
247
319
|
end
|
248
320
|
end
|
321
|
+
|
322
|
+
MiniTest::Unit.runner = MiniTest::Display::Runner.new
|
data/minitest-display.gemspec
CHANGED
@@ -96,6 +96,67 @@ class TestMinitestDisplay < MiniTest::Unit::TestCase
|
|
96
96
|
end
|
97
97
|
|
98
98
|
def test_runs_basic_test_with_slow_output
|
99
|
+
capture_test_output <<-TESTCASE
|
100
|
+
MiniTest::Display.options = {
|
101
|
+
:suite_divider => ' // ',
|
102
|
+
:print => {
|
103
|
+
:success => 'PASS'
|
104
|
+
},
|
105
|
+
:output_slow => true
|
106
|
+
}
|
107
|
+
class PrintTest < MiniTest::Unit::TestCase
|
108
|
+
|
109
|
+
def test_truth
|
110
|
+
assert false
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_equality
|
114
|
+
assert_equal 'test', 'test'
|
115
|
+
end
|
116
|
+
end
|
117
|
+
TESTCASE
|
118
|
+
|
119
|
+
assert_output(/PrintTest \/\//)
|
120
|
+
assert_output(/F/)
|
121
|
+
assert_output(/PASS/)
|
122
|
+
assert_output(/Slowest tests:/)
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_adding_a_recorder
|
126
|
+
capture_test_output <<-TESTCASE
|
127
|
+
MiniTest::Display.options = {
|
128
|
+
:suite_divider => ' // ',
|
129
|
+
:print => {
|
130
|
+
:success => 'PASS'
|
131
|
+
}
|
132
|
+
}
|
133
|
+
class TestRecorder
|
134
|
+
def initialize(runner)
|
135
|
+
@runner = runner
|
136
|
+
end
|
99
137
|
|
138
|
+
def record(suite, method, assertions, time, error)
|
139
|
+
puts "I just recorded \#{method}"
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
MiniTest::Unit.runner.add_recorder TestRecorder
|
144
|
+
|
145
|
+
class PrintTest < MiniTest::Unit::TestCase
|
146
|
+
|
147
|
+
def test_truth
|
148
|
+
assert false
|
149
|
+
end
|
150
|
+
|
151
|
+
def test_equality
|
152
|
+
assert_equal 'test', 'test'
|
153
|
+
end
|
154
|
+
end
|
155
|
+
TESTCASE
|
156
|
+
|
157
|
+
assert_output(/PrintTest \/\//)
|
158
|
+
assert_output(/F/)
|
159
|
+
assert_output(/PASS/)
|
160
|
+
assert_output(/I just recorded test_truth/)
|
100
161
|
end
|
101
162
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minitest-display
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.0.
|
4
|
+
version: 0.2.0.pre1
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -97,7 +97,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
97
97
|
version: '0'
|
98
98
|
segments:
|
99
99
|
- 0
|
100
|
-
hash:
|
100
|
+
hash: -196578224241529299
|
101
101
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
102
|
none: false
|
103
103
|
requirements:
|