minitest 4.4.0 → 4.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/.autotest +1 -0
- data/History.txt +19 -0
- data/README.txt +4 -1
- data/lib/minitest/hell.rb +2 -0
- data/lib/minitest/parallel_each.rb +16 -0
- data/lib/minitest/unit.rb +46 -23
- data/test/minitest/test_minitest_mock.rb +3 -4
- data/test/minitest/test_minitest_spec.rb +75 -26
- data/test/minitest/test_minitest_unit.rb +109 -33
- metadata +7 -7
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/.autotest
CHANGED
@@ -10,6 +10,7 @@ Autotest.add_hook :initialize do |at|
|
|
10
10
|
at.extra_class_map["TestMeta"] = "test/test_minitest_spec.rb"
|
11
11
|
at.extra_class_map["TestMiniTestUnitTestCase"] = "test/test_minitest_unit.rb"
|
12
12
|
at.extra_class_map["TestMiniTestUnit"] = "test/test_minitest_unit.rb"
|
13
|
+
at.extra_class_map["TestMiniTestUnitRecording"]= "test/test_minitest_unit.rb"
|
13
14
|
at.extra_class_map["TestMiniTestStub"] = "test/test_minitest_mock.rb"
|
14
15
|
at.add_exception 'coverage.info'
|
15
16
|
at.add_exception 'coverage'
|
data/History.txt
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
=== 4.5.0 / 2013-01-22
|
2
|
+
|
3
|
+
* 1 major enhancement:
|
4
|
+
|
5
|
+
* Rearranged minitest/unit.rb so NO parallelization code is loaded/used until you opt-in.
|
6
|
+
|
7
|
+
* 4 minor enhancements:
|
8
|
+
|
9
|
+
* Added TestCase#skipped? for teardown guards
|
10
|
+
* Added maglev? guard
|
11
|
+
* Document that record can be sent twice if teardown fails or errors (randycoulman)
|
12
|
+
* Errors in teardown are now recorded. (randycoulman)
|
13
|
+
|
14
|
+
* 3 bug fixes:
|
15
|
+
|
16
|
+
* Added hacks and skips to get clean test runs on maglev
|
17
|
+
* Modified float tests for maglev float output differences. Not sure this is right. Not sure I care.
|
18
|
+
* Test for existance of diff.exe instead of assuming they have devkit. (blowmage/Cumbayah)
|
19
|
+
|
1
20
|
=== 4.4.0 / 2013-01-07
|
2
21
|
|
3
22
|
* 3 minor enhancements:
|
data/README.txt
CHANGED
@@ -286,6 +286,7 @@ fixture loading:
|
|
286
286
|
capybara_minitest_spec :: Bridge between Capybara RSpec matchers and MiniTest::Spec expectations (e.g. page.must_have_content('Title')).
|
287
287
|
minispec-metadata :: Metadata for describe/it blocks
|
288
288
|
(e.g. `it 'requires JS driver', js: true do`)
|
289
|
+
minitest-ansi :: Colorize minitest output with ANSI colors.
|
289
290
|
minitest-around :: Around block for minitest. An alternative to setup/teardown dance.
|
290
291
|
minitest-capistrano :: Assertions and expectations for testing Capistrano recipes
|
291
292
|
minitest-capybara :: Capybara matchers support for minitest unit and spec
|
@@ -301,6 +302,7 @@ minitest-emoji :: Print out emoji for your test passes, fails, and skip
|
|
301
302
|
minitest-excludes :: Clean API for excluding certain tests you
|
302
303
|
don't want to run under certain conditions.
|
303
304
|
minitest-firemock :: Makes your MiniTest mocks more resilient.
|
305
|
+
minitest-great_expectations :: Generally useful additions to minitest's assertions and expectations
|
304
306
|
minitest-growl :: Test notifier for minitest via growl.
|
305
307
|
minitest-instrument :: Instrument ActiveSupport::Notifications when
|
306
308
|
test method is executed
|
@@ -312,11 +314,13 @@ minitest-matchers :: Adds support for RSpec-style matchers to minitest.
|
|
312
314
|
minitest-metadata :: Annotate tests with metadata (key-value).
|
313
315
|
minitest-mongoid :: Mongoid assertion matchers for MiniTest
|
314
316
|
minitest-must_not :: Provides must_not as an alias for wont in MiniTest
|
317
|
+
minitest-nc :: Test notifier for minitest via Mountain Lion's Notification Center
|
315
318
|
minitest-predicates :: Adds support for .predicate? methods
|
316
319
|
minitest-rails :: MiniTest integration for Rails 3.x
|
317
320
|
minitest-rails-capybara :: Capybara integration for MiniTest::Rails
|
318
321
|
minitest-reporters :: Create customizable MiniTest output formats
|
319
322
|
minitest-rg :: redgreen minitest
|
323
|
+
minitest-should_syntax :: RSpec-style +x.should == y+ assertions for MiniTest
|
320
324
|
minitest-shouldify :: Adding all manner of shoulds to MiniTest (bad idea)
|
321
325
|
minitest-spec-magic :: Minitest::Spec extensions for Rails and beyond
|
322
326
|
minitest-spec-rails :: Drop in MiniTest::Spec superclass for ActiveSupport::TestCase.
|
@@ -344,7 +348,6 @@ Authors... Please send me a pull request with a description of your minitest ext
|
|
344
348
|
* minitest-colorer
|
345
349
|
* minitest-deluxe
|
346
350
|
* minitest-extra-assertions
|
347
|
-
* minitest-nc
|
348
351
|
* minitest-rails-shoulda
|
349
352
|
* minitest-spec
|
350
353
|
* minitest-spec-context
|
data/lib/minitest/hell.rb
CHANGED
@@ -43,3 +43,19 @@ class ParallelEach
|
|
43
43
|
threads.map(&:join)
|
44
44
|
end
|
45
45
|
end
|
46
|
+
|
47
|
+
class MiniTest::Unit
|
48
|
+
alias _old_run_suites _run_suites
|
49
|
+
|
50
|
+
##
|
51
|
+
# Runs all the +suites+ for a given +type+. Runs suites declaring
|
52
|
+
# a test_order of +:parallel+ in parallel, and everything else
|
53
|
+
# serial.
|
54
|
+
|
55
|
+
def _run_suites suites, type
|
56
|
+
parallel, serial = suites.partition { |s| s.test_order == :parallel }
|
57
|
+
|
58
|
+
ParallelEach.new(parallel).map { |suite| _run_suite suite, type } +
|
59
|
+
serial.map { |suite| _run_suite suite, type }
|
60
|
+
end
|
61
|
+
end
|
data/lib/minitest/unit.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require 'thread' # required for 1.8
|
4
|
-
require 'minitest/parallel_each'
|
1
|
+
require "optparse"
|
2
|
+
require "rbconfig"
|
5
3
|
|
6
4
|
##
|
7
5
|
# Minimal (mostly drop-in) replacement for test-unit.
|
@@ -83,16 +81,17 @@ module MiniTest
|
|
83
81
|
# figure out what diff to use.
|
84
82
|
|
85
83
|
def self.diff
|
86
|
-
@diff = if RbConfig::CONFIG['host_os'] =~ /mswin|mingw/
|
84
|
+
@diff = if (RbConfig::CONFIG['host_os'] =~ /mswin|mingw/ &&
|
85
|
+
system("diff.exe", __FILE__, __FILE__)) then
|
87
86
|
"diff.exe -u"
|
87
|
+
elsif Minitest::Unit::Guard.maglev? then # HACK
|
88
|
+
"diff -u"
|
89
|
+
elsif system("gdiff", __FILE__, __FILE__)
|
90
|
+
"gdiff -u" # solaris and kin suck
|
91
|
+
elsif system("diff", __FILE__, __FILE__)
|
92
|
+
"diff -u"
|
88
93
|
else
|
89
|
-
|
90
|
-
"gdiff -u" # solaris and kin suck
|
91
|
-
elsif system("diff", __FILE__, __FILE__)
|
92
|
-
"diff -u"
|
93
|
-
else
|
94
|
-
nil
|
95
|
-
end
|
94
|
+
nil
|
96
95
|
end unless defined? @diff
|
97
96
|
|
98
97
|
@diff
|
@@ -720,9 +719,14 @@ module MiniTest
|
|
720
719
|
|
721
720
|
def skip msg = nil, bt = caller
|
722
721
|
msg ||= "Skipped, no message given"
|
722
|
+
@skip = true
|
723
723
|
raise MiniTest::Skip, msg, bt
|
724
724
|
end
|
725
725
|
|
726
|
+
def skipped?
|
727
|
+
defined?(@skip) and @skip
|
728
|
+
end
|
729
|
+
|
726
730
|
##
|
727
731
|
# Takes a block and wraps it with the runner's shared mutex.
|
728
732
|
|
@@ -734,7 +738,7 @@ module MiniTest
|
|
734
738
|
end
|
735
739
|
|
736
740
|
class Unit # :nodoc:
|
737
|
-
VERSION = "4.
|
741
|
+
VERSION = "4.5.0" # :nodoc:
|
738
742
|
|
739
743
|
attr_accessor :report, :failures, :errors, :skips # :nodoc:
|
740
744
|
attr_accessor :test_count, :assertion_count # :nodoc:
|
@@ -885,15 +889,13 @@ module MiniTest
|
|
885
889
|
end
|
886
890
|
|
887
891
|
##
|
888
|
-
# Runs all the +suites+ for a given +type+.
|
889
|
-
#
|
890
|
-
#
|
892
|
+
# Runs all the +suites+ for a given +type+.
|
893
|
+
#
|
894
|
+
# NOTE: this method is redefined in parallel_each.rb, which is
|
895
|
+
# loaded if a test-suite calls parallelize_me!.
|
891
896
|
|
892
897
|
def _run_suites suites, type
|
893
|
-
|
894
|
-
|
895
|
-
ParallelEach.new(parallel).map { |suite| _run_suite suite, type } +
|
896
|
-
serial.map { |suite| _run_suite suite, type }
|
898
|
+
suites.map { |suite| _run_suite suite, type }
|
897
899
|
end
|
898
900
|
|
899
901
|
##
|
@@ -926,7 +928,7 @@ module MiniTest
|
|
926
928
|
end
|
927
929
|
|
928
930
|
##
|
929
|
-
# Record the result of a single
|
931
|
+
# Record the result of a single test. Makes it very easy to gather
|
930
932
|
# information. Eg:
|
931
933
|
#
|
932
934
|
# class StatisticsRecorder < MiniTest::Unit
|
@@ -936,6 +938,11 @@ module MiniTest
|
|
936
938
|
# end
|
937
939
|
#
|
938
940
|
# MiniTest::Unit.runner = StatisticsRecorder.new
|
941
|
+
#
|
942
|
+
# NOTE: record might be sent more than once per test. It will be
|
943
|
+
# sent once with the results from the test itself. If there is a
|
944
|
+
# failure or error in teardown, it will be sent again with the
|
945
|
+
# error or failure.
|
939
946
|
|
940
947
|
def record suite, method, assertions, time, error
|
941
948
|
end
|
@@ -975,11 +982,15 @@ module MiniTest
|
|
975
982
|
@report = []
|
976
983
|
@errors = @failures = @skips = 0
|
977
984
|
@verbose = false
|
978
|
-
@mutex = Mutex.new
|
985
|
+
@mutex = Mutex.new if defined?(Mutex)
|
979
986
|
end
|
980
987
|
|
981
988
|
def synchronize # :nodoc:
|
982
|
-
@mutex
|
989
|
+
if @mutex then
|
990
|
+
@mutex.synchronize { yield }
|
991
|
+
else
|
992
|
+
yield
|
993
|
+
end
|
983
994
|
end
|
984
995
|
|
985
996
|
def process_args args = [] # :nodoc:
|
@@ -1092,6 +1103,15 @@ module MiniTest
|
|
1092
1103
|
##
|
1093
1104
|
# Is this running on mri?
|
1094
1105
|
|
1106
|
+
def maglev? platform = defined?(RUBY_ENGINE) && RUBY_ENGINE
|
1107
|
+
"maglev" == platform
|
1108
|
+
end
|
1109
|
+
|
1110
|
+
module_function :maglev?
|
1111
|
+
|
1112
|
+
##
|
1113
|
+
# Is this running on mri?
|
1114
|
+
|
1095
1115
|
def mri? platform = RUBY_DESCRIPTION
|
1096
1116
|
/^ruby/ =~ platform
|
1097
1117
|
end
|
@@ -1315,6 +1335,7 @@ module MiniTest
|
|
1315
1335
|
raise
|
1316
1336
|
rescue Exception => e
|
1317
1337
|
@passed = false
|
1338
|
+
runner.record self.class, self.__name__, self._assertions, time, e
|
1318
1339
|
result = runner.puke self.class, self.__name__, e
|
1319
1340
|
end
|
1320
1341
|
end
|
@@ -1389,6 +1410,8 @@ module MiniTest
|
|
1389
1410
|
# and your tests are awesome.
|
1390
1411
|
|
1391
1412
|
def self.parallelize_me!
|
1413
|
+
require "minitest/parallel_each"
|
1414
|
+
|
1392
1415
|
class << self
|
1393
1416
|
undef_method :test_order if method_defined? :test_order
|
1394
1417
|
define_method :test_order do :parallel end
|
@@ -1,7 +1,4 @@
|
|
1
|
-
require 'minitest/
|
2
|
-
require 'minitest/unit'
|
3
|
-
|
4
|
-
MiniTest::Unit.autorun
|
1
|
+
require 'minitest/autorun'
|
5
2
|
|
6
3
|
class TestMiniTestMock < MiniTest::Unit::TestCase
|
7
4
|
parallelize_me!
|
@@ -67,6 +64,8 @@ class TestMiniTestMock < MiniTest::Unit::TestCase
|
|
67
64
|
end
|
68
65
|
|
69
66
|
def test_mock_args_does_not_raise
|
67
|
+
skip "non-opaque use of ==" if maglev?
|
68
|
+
|
70
69
|
arg = MiniTest::Mock.new
|
71
70
|
mock = MiniTest::Mock.new
|
72
71
|
mock.expect(:foo, nil, [arg])
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require
|
3
|
-
require
|
2
|
+
require "minitest/autorun"
|
3
|
+
require "stringio"
|
4
4
|
|
5
5
|
class MiniSpecA < MiniTest::Spec; end
|
6
6
|
class MiniSpecB < MiniTest::Spec; end
|
@@ -8,7 +8,7 @@ class ExampleA; end
|
|
8
8
|
class ExampleB < ExampleA; end
|
9
9
|
|
10
10
|
describe MiniTest::Spec do
|
11
|
-
# do not parallelize this suite... it just can
|
11
|
+
# do not parallelize this suite... it just can"t handle it.
|
12
12
|
|
13
13
|
def assert_triggered expected = "blah", klass = MiniTest::Assertion
|
14
14
|
@assertion_count += 2
|
@@ -18,7 +18,7 @@ describe MiniTest::Spec do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
msg = e.message.sub(/(---Backtrace---).*/m, '\1')
|
21
|
-
msg.gsub!(/\(oid=[-0-9]+\)/,
|
21
|
+
msg.gsub!(/\(oid=[-0-9]+\)/, "(oid=N)")
|
22
22
|
|
23
23
|
assert_equal expected, msg
|
24
24
|
end
|
@@ -28,7 +28,7 @@ describe MiniTest::Spec do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
after do
|
31
|
-
self._assertions.must_equal @assertion_count
|
31
|
+
self._assertions.must_equal @assertion_count if passed? and not skipped?
|
32
32
|
end
|
33
33
|
|
34
34
|
it "needs to be able to catch a MiniTest::Assertion exception" do
|
@@ -77,10 +77,10 @@ describe MiniTest::Spec do
|
|
77
77
|
it "needs to catch an unexpected exception" do
|
78
78
|
@assertion_count -= 2 # no positive
|
79
79
|
|
80
|
-
msg = <<-EOM.gsub(/^ {6}/,
|
80
|
+
msg = <<-EOM.gsub(/^ {6}/, "").chomp
|
81
81
|
[RuntimeError] exception expected, not
|
82
82
|
Class: <MiniTest::Assertion>
|
83
|
-
Message:
|
83
|
+
Message: <"MiniTest::Assertion">
|
84
84
|
---Backtrace---
|
85
85
|
EOM
|
86
86
|
|
@@ -133,7 +133,7 @@ describe MiniTest::Spec do
|
|
133
133
|
|
134
134
|
bad = %w[not raise throw send output be_silent]
|
135
135
|
|
136
|
-
expected_wonts = expected_musts.map { |m| m.sub(/^must/,
|
136
|
+
expected_wonts = expected_musts.map { |m| m.sub(/^must/, "wont") }
|
137
137
|
expected_wonts.reject! { |m| m =~ /wont_#{Regexp.union(*bad)}/ }
|
138
138
|
|
139
139
|
musts.must_equal expected_musts
|
@@ -155,7 +155,7 @@ describe MiniTest::Spec do
|
|
155
155
|
it "needs to verify binary messages" do
|
156
156
|
42.wont_be(:<, 24).must_equal false
|
157
157
|
|
158
|
-
assert_triggered
|
158
|
+
assert_triggered "Expected 24 to not be < 42." do
|
159
159
|
24.wont_be :<, 42
|
160
160
|
end
|
161
161
|
|
@@ -195,15 +195,16 @@ describe MiniTest::Spec do
|
|
195
195
|
|
196
196
|
24.wont_be_close_to(42).must_equal false
|
197
197
|
|
198
|
-
assert_triggered
|
198
|
+
assert_triggered "Expected |42 - 42.0| (0.0) to not be < 0.001." do
|
199
199
|
(6 * 7.0).wont_be_close_to 42
|
200
200
|
end
|
201
201
|
|
202
|
-
|
202
|
+
x = maglev? ? "1.0000000000000001e-05" : "1.0e-05"
|
203
|
+
assert_triggered "Expected |42 - 42.0| (0.0) to not be < #{x}." do
|
203
204
|
(6 * 7.0).wont_be_close_to 42, 0.00001
|
204
205
|
end
|
205
206
|
|
206
|
-
assert_triggered "msg.\nExpected |42 - 42.0| (0.0) to not be <
|
207
|
+
assert_triggered "msg.\nExpected |42 - 42.0| (0.0) to not be < #{x}." do
|
207
208
|
(6 * 7.0).wont_be_close_to 42, 0.00001, "msg"
|
208
209
|
end
|
209
210
|
end
|
@@ -213,15 +214,17 @@ describe MiniTest::Spec do
|
|
213
214
|
|
214
215
|
24.wont_be_within_epsilon(42).must_equal false
|
215
216
|
|
216
|
-
|
217
|
+
x = maglev? ? "0.042000000000000003" : "0.042"
|
218
|
+
assert_triggered "Expected |42 - 42.0| (0.0) to not be < #{x}." do
|
217
219
|
(6 * 7.0).wont_be_within_epsilon 42
|
218
220
|
end
|
219
221
|
|
220
|
-
|
222
|
+
x = maglev? ? "0.00042000000000000002" : "0.00042"
|
223
|
+
assert_triggered "Expected |42 - 42.0| (0.0) to not be < #{x}." do
|
221
224
|
(6 * 7.0).wont_be_within_epsilon 42, 0.00001
|
222
225
|
end
|
223
226
|
|
224
|
-
assert_triggered "msg.\nExpected |42 - 42.0| (0.0) to not be <
|
227
|
+
assert_triggered "msg.\nExpected |42 - 42.0| (0.0) to not be < #{x}." do
|
225
228
|
(6 * 7.0).wont_be_within_epsilon 42, 0.00001, "msg"
|
226
229
|
end
|
227
230
|
end
|
@@ -231,15 +234,16 @@ describe MiniTest::Spec do
|
|
231
234
|
|
232
235
|
(6.0 * 7).must_be_close_to(42.0).must_equal true
|
233
236
|
|
234
|
-
assert_triggered
|
237
|
+
assert_triggered "Expected |0.0 - 0.01| (0.01) to be < 0.001." do
|
235
238
|
(1.0 / 100).must_be_close_to 0.0
|
236
239
|
end
|
237
240
|
|
238
|
-
|
241
|
+
x = maglev? ? "9.9999999999999995e-07" : "1.0e-06"
|
242
|
+
assert_triggered "Expected |0.0 - 0.001| (0.001) to be < #{x}." do
|
239
243
|
(1.0 / 1000).must_be_close_to 0.0, 0.000001
|
240
244
|
end
|
241
245
|
|
242
|
-
assert_triggered "msg.\nExpected |0.0 - 0.001| (0.001) to be <
|
246
|
+
assert_triggered "msg.\nExpected |0.0 - 0.001| (0.001) to be < #{x}." do
|
243
247
|
(1.0 / 1000).must_be_close_to 0.0, 0.000001, "msg"
|
244
248
|
end
|
245
249
|
end
|
@@ -249,11 +253,11 @@ describe MiniTest::Spec do
|
|
249
253
|
|
250
254
|
(6.0 * 7).must_be_within_epsilon(42.0).must_equal true
|
251
255
|
|
252
|
-
assert_triggered
|
256
|
+
assert_triggered "Expected |0.0 - 0.01| (0.01) to be < 0.0." do
|
253
257
|
(1.0 / 100).must_be_within_epsilon 0.0
|
254
258
|
end
|
255
259
|
|
256
|
-
assert_triggered
|
260
|
+
assert_triggered "Expected |0.0 - 0.001| (0.001) to be < 0.0." do
|
257
261
|
(1.0 / 1000).must_be_within_epsilon 0.0, 0.000001
|
258
262
|
end
|
259
263
|
|
@@ -289,7 +293,7 @@ describe MiniTest::Spec do
|
|
289
293
|
it "needs to verify instances of a class" do
|
290
294
|
42.wont_be_instance_of(String).must_equal false
|
291
295
|
|
292
|
-
assert_triggered
|
296
|
+
assert_triggered "Expected 42 to not be an instance of Fixnum." do
|
293
297
|
42.wont_be_instance_of Fixnum
|
294
298
|
end
|
295
299
|
|
@@ -301,7 +305,7 @@ describe MiniTest::Spec do
|
|
301
305
|
it "needs to verify kinds of a class" do
|
302
306
|
42.wont_be_kind_of(String).must_equal false
|
303
307
|
|
304
|
-
assert_triggered
|
308
|
+
assert_triggered "Expected 42 to not be a kind of Integer." do
|
305
309
|
42.wont_be_kind_of Integer
|
306
310
|
end
|
307
311
|
|
@@ -354,7 +358,7 @@ describe MiniTest::Spec do
|
|
354
358
|
it "needs to verify non-emptyness" do
|
355
359
|
@assertion_count += 3 # empty is 2 assertions
|
356
360
|
|
357
|
-
[
|
361
|
+
["some item"].wont_be_empty.must_equal false
|
358
362
|
|
359
363
|
assert_triggered "Expected [] to not be empty." do
|
360
364
|
[].wont_be_empty
|
@@ -392,7 +396,7 @@ describe MiniTest::Spec do
|
|
392
396
|
it "needs to verify objects not responding to a message" do
|
393
397
|
"".wont_respond_to(:woot!).must_equal false
|
394
398
|
|
395
|
-
assert_triggered
|
399
|
+
assert_triggered "Expected \"\" to not respond to to_s." do
|
396
400
|
"".wont_respond_to :to_s
|
397
401
|
end
|
398
402
|
|
@@ -472,7 +476,7 @@ describe MiniTest::Spec do
|
|
472
476
|
end
|
473
477
|
|
474
478
|
it "needs to verify using any (negative) predicate" do
|
475
|
-
@assertion_count -= 1 # doesn
|
479
|
+
@assertion_count -= 1 # doesn"t take a message
|
476
480
|
|
477
481
|
"blah".wont_be(:empty?).must_equal false
|
478
482
|
|
@@ -693,7 +697,7 @@ class TestMeta < MiniTest::Unit::TestCase
|
|
693
697
|
z = describe "second thingy" do end
|
694
698
|
end
|
695
699
|
|
696
|
-
test_methods = [
|
700
|
+
test_methods = ["test_0001_top level it", "test_0002_не латинские буквы-и-спецсимволы&いった α, β, γ, δ, ε hello!!! world"].sort
|
697
701
|
|
698
702
|
assert_equal test_methods, [x1, x2]
|
699
703
|
assert_equal test_methods,
|
@@ -729,3 +733,48 @@ class TestMeta < MiniTest::Unit::TestCase
|
|
729
733
|
end
|
730
734
|
end
|
731
735
|
end
|
736
|
+
|
737
|
+
require "minitest/metametameta"
|
738
|
+
|
739
|
+
class TestSpecInTestCase < MetaMetaMetaTestCase
|
740
|
+
def setup
|
741
|
+
super
|
742
|
+
|
743
|
+
@tc = MiniTest::Unit::TestCase.new "fake tc"
|
744
|
+
@assertion_count = 1
|
745
|
+
end
|
746
|
+
|
747
|
+
def util_assert_triggered expected, klass = MiniTest::Assertion # REFACTOR
|
748
|
+
e = assert_raises klass do
|
749
|
+
yield
|
750
|
+
end
|
751
|
+
|
752
|
+
msg = e.message.sub(/(---Backtrace---).*/m, "\1")
|
753
|
+
msg.gsub!(/\(oid=[-0-9]+\)/, "(oid=N)")
|
754
|
+
|
755
|
+
assert_equal expected, msg
|
756
|
+
end
|
757
|
+
|
758
|
+
def teardown # REFACTOR
|
759
|
+
assert_equal(@assertion_count, @tc._assertions,
|
760
|
+
"expected #{@assertion_count} assertions to be fired during the test, not #{@tc._assertions}") if @tc.passed?
|
761
|
+
end
|
762
|
+
|
763
|
+
def test_expectation
|
764
|
+
@assertion_count = 2
|
765
|
+
|
766
|
+
@tc.assert_equal true, 1.must_equal(1)
|
767
|
+
end
|
768
|
+
|
769
|
+
def test_expectation_triggered
|
770
|
+
util_assert_triggered "Expected: 2\n Actual: 1" do
|
771
|
+
1.must_equal 2
|
772
|
+
end
|
773
|
+
end
|
774
|
+
|
775
|
+
def test_expectation_with_a_message
|
776
|
+
util_assert_triggered "Expected: 2\n Actual: 1" do
|
777
|
+
1.must_equal 2, ""
|
778
|
+
end
|
779
|
+
end
|
780
|
+
end
|
@@ -306,7 +306,7 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
|
|
306
306
|
1) Error:
|
307
307
|
test_error(#<Class:0xXXX>):
|
308
308
|
RuntimeError: unhandled exception
|
309
|
-
FILE:LINE:in
|
309
|
+
FILE:LINE:in \`test_error\'
|
310
310
|
|
311
311
|
2 tests, 1 assertions, 0 failures, 1 errors, 0 skips
|
312
312
|
EOM
|
@@ -333,7 +333,7 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
|
|
333
333
|
1) Error:
|
334
334
|
test_something(#<Class:0xXXX>):
|
335
335
|
RuntimeError: unhandled exception
|
336
|
-
FILE:LINE:in
|
336
|
+
FILE:LINE:in \`teardown\'
|
337
337
|
|
338
338
|
1 tests, 1 assertions, 0 failures, 1 errors, 0 skips
|
339
339
|
EOM
|
@@ -516,6 +516,8 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
|
|
516
516
|
end
|
517
517
|
|
518
518
|
def test_run_parallel
|
519
|
+
skip "I don't have ParallelEach debugged yet" if maglev?
|
520
|
+
|
519
521
|
test_count = 2
|
520
522
|
test_latch = Latch.new test_count
|
521
523
|
main_latch = Latch.new
|
@@ -644,12 +646,12 @@ class TestMiniTestUnitOrder < MetaMetaMetaTestCase
|
|
644
646
|
def test_setup_and_teardown_survive_inheritance
|
645
647
|
call_order = []
|
646
648
|
|
647
|
-
parent = Class.new MiniTest::
|
648
|
-
|
649
|
+
parent = Class.new MiniTest::Unit::TestCase do
|
650
|
+
define_method :setup do
|
649
651
|
call_order << :setup_method
|
650
652
|
end
|
651
653
|
|
652
|
-
|
654
|
+
define_method :teardown do
|
653
655
|
call_order << :teardown_method
|
654
656
|
end
|
655
657
|
|
@@ -690,7 +692,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
|
|
690
692
|
|
691
693
|
def teardown
|
692
694
|
assert_equal(@assertion_count, @tc._assertions,
|
693
|
-
"expected #{@assertion_count} assertions to be fired during the test, not #{@tc._assertions}") if @tc.
|
695
|
+
"expected #{@assertion_count} assertions to be fired during the test, not #{@tc._assertions}") if @tc.passed?
|
694
696
|
end
|
695
697
|
|
696
698
|
def non_verbose
|
@@ -787,6 +789,8 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
|
|
787
789
|
end
|
788
790
|
|
789
791
|
def test_assert_equal_different_diff_deactivated
|
792
|
+
skip "https://github.com/MagLev/maglev/issues/209" if maglev?
|
793
|
+
|
790
794
|
without_diff do
|
791
795
|
util_assert_triggered util_msg("haha" * 10, "blah" * 10) do
|
792
796
|
o1 = "haha" * 10
|
@@ -900,7 +904,8 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
|
|
900
904
|
end
|
901
905
|
|
902
906
|
def test_assert_in_delta_triggered
|
903
|
-
|
907
|
+
x = maglev? ? "9.9999999999999995e-07" : "1.0e-06"
|
908
|
+
util_assert_triggered "Expected |0.0 - 0.001| (0.001) to be < #{x}." do
|
904
909
|
@tc.assert_in_delta 0.0, 1.0 / 1000, 0.000001
|
905
910
|
end
|
906
911
|
end
|
@@ -929,8 +934,9 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
|
|
929
934
|
end
|
930
935
|
|
931
936
|
def test_assert_in_epsilon_triggered_negative_case
|
932
|
-
x = RUBY18 ? "0.1" : "0.10000000000000009"
|
933
|
-
|
937
|
+
x = (RUBY18 and not maglev?) ? "0.1" : "0.10000000000000009"
|
938
|
+
y = maglev? ? "0.10000000000000001" : "0.1"
|
939
|
+
util_assert_triggered "Expected |-1.1 - -1| (#{x}) to be < #{y}." do
|
934
940
|
@tc.assert_in_epsilon(-1.1, -1, 0.1)
|
935
941
|
end
|
936
942
|
end
|
@@ -1158,7 +1164,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
|
|
1158
1164
|
Class: <SyntaxError>
|
1159
1165
|
Message: <\"icky\">
|
1160
1166
|
---Backtrace---
|
1161
|
-
FILE:LINE:in
|
1167
|
+
FILE:LINE:in \`test_assert_raises_triggered_different\'
|
1162
1168
|
---------------
|
1163
1169
|
EOM
|
1164
1170
|
|
@@ -1181,7 +1187,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
|
|
1181
1187
|
Class: <SyntaxError>
|
1182
1188
|
Message: <\"icky\">
|
1183
1189
|
---Backtrace---
|
1184
|
-
FILE:LINE:in
|
1190
|
+
FILE:LINE:in \`test_assert_raises_triggered_different_msg\'
|
1185
1191
|
---------------
|
1186
1192
|
EOM
|
1187
1193
|
|
@@ -1227,7 +1233,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
|
|
1227
1233
|
Class: <AnError>
|
1228
1234
|
Message: <\"AnError\">
|
1229
1235
|
---Backtrace---
|
1230
|
-
FILE:LINE:in
|
1236
|
+
FILE:LINE:in \`test_assert_raises_triggered_subclass\'
|
1231
1237
|
---------------
|
1232
1238
|
EOM
|
1233
1239
|
|
@@ -1335,7 +1341,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
|
|
1335
1341
|
non_verbose do
|
1336
1342
|
out, err = capture_io do
|
1337
1343
|
puts 'hi'
|
1338
|
-
|
1344
|
+
$stderr.puts 'bye!'
|
1339
1345
|
end
|
1340
1346
|
|
1341
1347
|
assert_equal "hi\n", out
|
@@ -1381,24 +1387,6 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
|
|
1381
1387
|
assert_empty asserts.map { |n| n.sub(/^assert/, 'refute') } - refutes
|
1382
1388
|
end
|
1383
1389
|
|
1384
|
-
def test_expectation
|
1385
|
-
@assertion_count = 2
|
1386
|
-
|
1387
|
-
@tc.assert_equal true, 1.must_equal(1)
|
1388
|
-
end
|
1389
|
-
|
1390
|
-
def test_expectation_triggered
|
1391
|
-
util_assert_triggered "Expected: 2\n Actual: 1" do
|
1392
|
-
1.must_equal 2
|
1393
|
-
end
|
1394
|
-
end
|
1395
|
-
|
1396
|
-
def test_expectation_with_a_message
|
1397
|
-
util_assert_triggered "Expected: 2\n Actual: 1" do
|
1398
|
-
1.must_equal 2, ''
|
1399
|
-
end
|
1400
|
-
end
|
1401
|
-
|
1402
1390
|
def test_flunk
|
1403
1391
|
util_assert_triggered 'Epic Fail!' do
|
1404
1392
|
@tc.flunk
|
@@ -1494,7 +1482,8 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
|
|
1494
1482
|
end
|
1495
1483
|
|
1496
1484
|
def test_refute_in_delta_triggered
|
1497
|
-
|
1485
|
+
x = maglev? ? "0.10000000000000001" : "0.1"
|
1486
|
+
util_assert_triggered "Expected |0.0 - 0.001| (0.001) to not be < #{x}." do
|
1498
1487
|
@tc.refute_in_delta 0.0, 1.0 / 1000, 0.1
|
1499
1488
|
end
|
1500
1489
|
end
|
@@ -1652,7 +1641,12 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
|
|
1652
1641
|
end
|
1653
1642
|
|
1654
1643
|
srand 42
|
1655
|
-
expected =
|
1644
|
+
expected = case
|
1645
|
+
when maglev? then
|
1646
|
+
%w(test_test2 test_test3 test_test1)
|
1647
|
+
else
|
1648
|
+
%w(test_test2 test_test1 test_test3)
|
1649
|
+
end
|
1656
1650
|
assert_equal expected, sample_test_case.test_methods
|
1657
1651
|
end
|
1658
1652
|
|
@@ -1742,3 +1736,85 @@ class TestMiniTestGuard < MiniTest::Unit::TestCase
|
|
1742
1736
|
assert self.windows? "mswin"
|
1743
1737
|
end
|
1744
1738
|
end
|
1739
|
+
|
1740
|
+
class TestMiniTestUnitRecording < MetaMetaMetaTestCase
|
1741
|
+
# do not parallelize this suite... it just can't handle it.
|
1742
|
+
|
1743
|
+
def assert_run_record(*expected, &block)
|
1744
|
+
def @tu.record suite, method, assertions, time, error
|
1745
|
+
recording[method] << error
|
1746
|
+
end
|
1747
|
+
|
1748
|
+
def @tu.recording
|
1749
|
+
@recording ||= Hash.new { |h,k| h[k] = [] }
|
1750
|
+
end
|
1751
|
+
|
1752
|
+
MiniTest::Unit.runner = @tu
|
1753
|
+
|
1754
|
+
Class.new MiniTest::Unit::TestCase, &block
|
1755
|
+
|
1756
|
+
with_output do
|
1757
|
+
@tu.run
|
1758
|
+
end
|
1759
|
+
|
1760
|
+
recorded = @tu.recording.fetch("test_method").map(&:class)
|
1761
|
+
|
1762
|
+
assert_equal expected, recorded
|
1763
|
+
end
|
1764
|
+
|
1765
|
+
def test_record_passing
|
1766
|
+
assert_run_record NilClass do
|
1767
|
+
def test_method
|
1768
|
+
assert true
|
1769
|
+
end
|
1770
|
+
end
|
1771
|
+
end
|
1772
|
+
|
1773
|
+
def test_record_failing
|
1774
|
+
assert_run_record MiniTest::Assertion do
|
1775
|
+
def test_method
|
1776
|
+
assert false
|
1777
|
+
end
|
1778
|
+
end
|
1779
|
+
end
|
1780
|
+
|
1781
|
+
def test_record_error
|
1782
|
+
assert_run_record RuntimeError do
|
1783
|
+
def test_method
|
1784
|
+
raise "unhandled exception"
|
1785
|
+
end
|
1786
|
+
end
|
1787
|
+
end
|
1788
|
+
|
1789
|
+
def test_record_error_teardown
|
1790
|
+
assert_run_record NilClass, RuntimeError do
|
1791
|
+
def test_method
|
1792
|
+
assert true
|
1793
|
+
end
|
1794
|
+
|
1795
|
+
def teardown
|
1796
|
+
raise "unhandled exception"
|
1797
|
+
end
|
1798
|
+
end
|
1799
|
+
end
|
1800
|
+
|
1801
|
+
def test_record_error_in_test_and_teardown
|
1802
|
+
assert_run_record AnError, RuntimeError do
|
1803
|
+
def test_method
|
1804
|
+
raise AnError
|
1805
|
+
end
|
1806
|
+
|
1807
|
+
def teardown
|
1808
|
+
raise "unhandled exception"
|
1809
|
+
end
|
1810
|
+
end
|
1811
|
+
end
|
1812
|
+
|
1813
|
+
def test_record_skip
|
1814
|
+
assert_run_record MiniTest::Skip do
|
1815
|
+
def test_method
|
1816
|
+
skip "not yet"
|
1817
|
+
end
|
1818
|
+
end
|
1819
|
+
end
|
1820
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minitest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 43
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 4
|
8
|
-
-
|
8
|
+
- 5
|
9
9
|
- 0
|
10
|
-
version: 4.
|
10
|
+
version: 4.5.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ryan Davis
|
@@ -36,7 +36,7 @@ cert_chain:
|
|
36
36
|
FBHgymkyj/AOSqKRIpXPhjC6
|
37
37
|
-----END CERTIFICATE-----
|
38
38
|
|
39
|
-
date: 2013-01-
|
39
|
+
date: 2013-01-23 00:00:00 Z
|
40
40
|
dependencies:
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rdoc
|
@@ -61,11 +61,11 @@ dependencies:
|
|
61
61
|
requirements:
|
62
62
|
- - ~>
|
63
63
|
- !ruby/object:Gem::Version
|
64
|
-
hash:
|
64
|
+
hash: 13
|
65
65
|
segments:
|
66
66
|
- 3
|
67
|
-
-
|
68
|
-
version: "3.
|
67
|
+
- 5
|
68
|
+
version: "3.5"
|
69
69
|
type: :development
|
70
70
|
version_requirements: *id002
|
71
71
|
description: |-
|
metadata.gz.sig
CHANGED
Binary file
|