minitest 1.3.0 → 1.3.1
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/.autotest +2 -2
- data/History.txt +25 -0
- data/Manifest.txt +1 -0
- data/lib/minitest/autorun.rb +3 -0
- data/lib/minitest/spec.rb +1 -0
- data/lib/minitest/unit.rb +29 -16
- data/test/test_mini_spec.rb +22 -8
- data/test/test_mini_test.rb +181 -31
- metadata +5 -4
data/.autotest
CHANGED
data/History.txt
CHANGED
@@ -1,3 +1,28 @@
|
|
1
|
+
=== 1.3.1 / 2009-01-20
|
2
|
+
|
3
|
+
* 1 minor enhancement:
|
4
|
+
|
5
|
+
* Added miniunit/autorun.rb as replacement for test/unit.rb's autorun.
|
6
|
+
|
7
|
+
* 16 bug fixes:
|
8
|
+
|
9
|
+
* 1.9 test fixes.
|
10
|
+
* Bug fixes from nobu and akira for really odd scenarios. They run ruby funny.
|
11
|
+
* Fixed (assert|refute)_match's argument order.
|
12
|
+
* Fixed LocalJumpError in autorun if exception thrown before at_exit.
|
13
|
+
* Fixed assert_in_delta (should be >=, not >).
|
14
|
+
* Fixed assert_raises to match Modules.
|
15
|
+
* Fixed capture_io to not dup IOs.
|
16
|
+
* Fixed indentation of capture_io for ruby 1.9 warning.
|
17
|
+
* Fixed location to deal better with custom assertions and load paths. (Yuki)
|
18
|
+
* Fixed order of (must|wont)_include in MiniTest::Spec.
|
19
|
+
* Fixed skip's backtrace.
|
20
|
+
* Got arg order wrong in *_match in tests, message wrong as a result.
|
21
|
+
* Made describe private. For some reason I thought that an attribute of Kernel.
|
22
|
+
* Removed disable_autorun method, added autorun.rb instead.
|
23
|
+
* assert_match escapes if passed string for pattern.
|
24
|
+
* instance_of? is different from ===, use instance_of.
|
25
|
+
|
1
26
|
=== 1.3.0 / 2008-10-09
|
2
27
|
|
3
28
|
* 2 major enhancements:
|
data/Manifest.txt
CHANGED
data/lib/minitest/spec.rb
CHANGED
data/lib/minitest/unit.rb
CHANGED
@@ -81,7 +81,7 @@ module MiniTest
|
|
81
81
|
def assert_in_delta exp, act, delta = 0.001, msg = nil
|
82
82
|
n = (exp - act).abs
|
83
83
|
msg = message(msg) { "Expected #{exp} - #{act} (#{n}) to be < #{delta}" }
|
84
|
-
assert delta
|
84
|
+
assert delta >= n, msg
|
85
85
|
end
|
86
86
|
|
87
87
|
def assert_in_epsilon a, b, epsilon = 0.001, msg = nil
|
@@ -90,6 +90,8 @@ module MiniTest
|
|
90
90
|
|
91
91
|
def assert_includes collection, obj, msg = nil
|
92
92
|
msg = message(msg) { "Expected #{mu_pp(collection)} to include #{mu_pp(obj)}" }
|
93
|
+
flip = (obj.respond_to? :include?) && ! (collection.respond_to? :include?) # HACK for specs
|
94
|
+
obj, collection = collection, obj if flip
|
93
95
|
assert_respond_to collection, :include?
|
94
96
|
assert collection.include?(obj), msg
|
95
97
|
end
|
@@ -98,7 +100,7 @@ module MiniTest
|
|
98
100
|
msg = message(msg) { "Expected #{mu_pp(obj)} to be an instance of #{cls}, not #{obj.class}" }
|
99
101
|
flip = (Module === obj) && ! (Module === cls) # HACK for specs
|
100
102
|
obj, cls = cls, obj if flip
|
101
|
-
assert cls
|
103
|
+
assert obj.instance_of?(cls), msg
|
102
104
|
end
|
103
105
|
|
104
106
|
def assert_kind_of cls, obj, msg = nil # TODO: merge with instance_of
|
@@ -110,10 +112,10 @@ module MiniTest
|
|
110
112
|
end
|
111
113
|
|
112
114
|
def assert_match exp, act, msg = nil
|
113
|
-
msg = message(msg) { "Expected #{mu_pp(
|
115
|
+
msg = message(msg) { "Expected #{mu_pp(exp)} to match #{mu_pp(act)}" }
|
114
116
|
assert_respond_to act, :"=~"
|
115
|
-
|
116
|
-
assert
|
117
|
+
exp = /#{Regexp.escape(exp)}/ if String === exp && String === act
|
118
|
+
assert exp =~ act, msg
|
117
119
|
end
|
118
120
|
|
119
121
|
def assert_nil obj, msg = nil
|
@@ -133,7 +135,10 @@ module MiniTest
|
|
133
135
|
yield
|
134
136
|
should_raise = true
|
135
137
|
rescue Exception => e
|
136
|
-
|
138
|
+
assert(exp.any? { |ex|
|
139
|
+
ex.instance_of?(Module) ? e.kind_of?(ex) : ex == e.class
|
140
|
+
}, exception_details(e, "#{mu_pp(exp)} exception expected, not"))
|
141
|
+
|
137
142
|
return e
|
138
143
|
end
|
139
144
|
|
@@ -185,7 +190,7 @@ module MiniTest
|
|
185
190
|
def capture_io
|
186
191
|
require 'stringio'
|
187
192
|
|
188
|
-
orig_stdout, orig_stderr = $stdout
|
193
|
+
orig_stdout, orig_stderr = $stdout, $stderr
|
189
194
|
captured_stdout, captured_stderr = StringIO.new, StringIO.new
|
190
195
|
$stdout, $stderr = captured_stdout, captured_stderr
|
191
196
|
|
@@ -252,6 +257,8 @@ module MiniTest
|
|
252
257
|
|
253
258
|
def refute_includes collection, obj, msg = nil
|
254
259
|
msg = message(msg) { "Expected #{mu_pp(collection)} to not include #{mu_pp(obj)}" }
|
260
|
+
flip = (obj.respond_to? :include?) && ! (collection.respond_to? :include?) # HACK for specs
|
261
|
+
obj, collection = collection, obj if flip
|
255
262
|
assert_respond_to collection, :include?
|
256
263
|
refute collection.include?(obj), msg
|
257
264
|
end
|
@@ -260,7 +267,7 @@ module MiniTest
|
|
260
267
|
msg = message(msg) { "Expected #{mu_pp(obj)} to not be an instance of #{cls}" }
|
261
268
|
flip = (Module === obj) && ! (Module === cls) # HACK for specs
|
262
269
|
obj, cls = cls, obj if flip
|
263
|
-
refute cls
|
270
|
+
refute obj.instance_of?(cls), msg
|
264
271
|
end
|
265
272
|
|
266
273
|
def refute_kind_of cls, obj, msg = nil # TODO: merge with instance_of
|
@@ -271,8 +278,10 @@ module MiniTest
|
|
271
278
|
end
|
272
279
|
|
273
280
|
def refute_match exp, act, msg = nil
|
274
|
-
msg = message(msg) { "Expected #{mu_pp(
|
275
|
-
|
281
|
+
msg = message(msg) { "Expected #{mu_pp(exp)} to not match #{mu_pp(act)}" }
|
282
|
+
assert_respond_to act, :"=~"
|
283
|
+
exp = /#{Regexp.escape(exp)}/ if String === exp && String === act
|
284
|
+
refute exp =~ act, msg
|
276
285
|
end
|
277
286
|
|
278
287
|
def refute_nil obj, msg = nil
|
@@ -297,14 +306,14 @@ module MiniTest
|
|
297
306
|
refute exp.equal?(act), msg
|
298
307
|
end
|
299
308
|
|
300
|
-
def skip msg = nil
|
309
|
+
def skip msg = nil, bt = caller
|
301
310
|
msg ||= "Skipped, no message given"
|
302
|
-
raise MiniTest::Skip, msg
|
311
|
+
raise MiniTest::Skip, msg, bt
|
303
312
|
end
|
304
313
|
end
|
305
314
|
|
306
315
|
class Unit
|
307
|
-
VERSION = "1.3.
|
316
|
+
VERSION = "1.3.1"
|
308
317
|
|
309
318
|
attr_accessor :report, :failures, :errors, :skips
|
310
319
|
attr_accessor :test_count, :assertion_count
|
@@ -314,6 +323,7 @@ module MiniTest
|
|
314
323
|
|
315
324
|
def self.autorun
|
316
325
|
at_exit {
|
326
|
+
next if $! # don't run if there was an exception
|
317
327
|
exit_code = MiniTest::Unit.new.run(ARGV)
|
318
328
|
exit false if exit_code && exit_code != 0
|
319
329
|
} unless @@installed_at_exit
|
@@ -325,9 +335,12 @@ module MiniTest
|
|
325
335
|
end
|
326
336
|
|
327
337
|
def location e
|
328
|
-
|
329
|
-
|
330
|
-
|
338
|
+
last_before_assertion = ""
|
339
|
+
e.backtrace.reverse_each do |s|
|
340
|
+
break if s =~ /in .(assert|refute|flunk|pass|fail|raise)/
|
341
|
+
last_before_assertion = s
|
342
|
+
end
|
343
|
+
last_before_assertion.sub(/:in .*$/, '')
|
331
344
|
end
|
332
345
|
|
333
346
|
def puke klass, meth, e
|
data/test/test_mini_spec.rb
CHANGED
@@ -4,7 +4,7 @@ MiniTest::Unit.autorun
|
|
4
4
|
|
5
5
|
describe MiniTest::Spec do
|
6
6
|
before do
|
7
|
-
@assertion_count =
|
7
|
+
@assertion_count = 4
|
8
8
|
end
|
9
9
|
|
10
10
|
after do
|
@@ -59,7 +59,7 @@ describe MiniTest::Spec do
|
|
59
59
|
end
|
60
60
|
|
61
61
|
it "needs to verify kinds of objects" do
|
62
|
-
@assertion_count =
|
62
|
+
@assertion_count = 6
|
63
63
|
|
64
64
|
(6 * 7).must_be_kind_of(Fixnum).must_equal true
|
65
65
|
(6 * 7).must_be_kind_of(Numeric).must_equal true
|
@@ -67,7 +67,8 @@ describe MiniTest::Spec do
|
|
67
67
|
end
|
68
68
|
|
69
69
|
it "needs to verify regexp matches" do
|
70
|
-
@assertion_count =
|
70
|
+
@assertion_count = 6
|
71
|
+
|
71
72
|
"blah".must_match(/\w+/).must_equal true
|
72
73
|
proc { "blah".must_match(/\d+/) }.must_raise MiniTest::Assertion
|
73
74
|
end
|
@@ -83,14 +84,14 @@ describe MiniTest::Spec do
|
|
83
84
|
end
|
84
85
|
|
85
86
|
it "needs to catch an expected exception" do
|
86
|
-
@assertion_count =
|
87
|
+
@assertion_count = 2
|
87
88
|
|
88
89
|
proc { raise "blah" }.must_raise RuntimeError
|
89
90
|
proc { raise MiniTest::Assertion }.must_raise MiniTest::Assertion
|
90
91
|
end
|
91
92
|
|
92
93
|
it "needs to catch an unexpected exception" do
|
93
|
-
@assertion_count =
|
94
|
+
@assertion_count = 2
|
94
95
|
|
95
96
|
proc {
|
96
97
|
proc { raise MiniTest::Assertion }.must_raise(RuntimeError)
|
@@ -98,13 +99,13 @@ describe MiniTest::Spec do
|
|
98
99
|
end
|
99
100
|
|
100
101
|
it "needs raise if an expected exception is not raised" do
|
101
|
-
@assertion_count =
|
102
|
+
@assertion_count = 2
|
102
103
|
|
103
104
|
proc { proc { 42 }.must_raise(RuntimeError) }.must_raise MiniTest::Assertion
|
104
105
|
end
|
105
106
|
|
106
107
|
it "needs to be able to catch a MiniTest::Assertion exception" do
|
107
|
-
@assertion_count =
|
108
|
+
@assertion_count = 2
|
108
109
|
|
109
110
|
proc { 1.wont_equal 1 }.must_raise MiniTest::Assertion
|
110
111
|
end
|
@@ -120,7 +121,7 @@ describe MiniTest::Spec do
|
|
120
121
|
end
|
121
122
|
|
122
123
|
it "needs to verify throw" do
|
123
|
-
@assertion_count =
|
124
|
+
@assertion_count = 6
|
124
125
|
|
125
126
|
proc { throw :blah }.must_throw(:blah).must_equal true
|
126
127
|
proc { proc { }.must_throw(:blah) }.must_raise MiniTest::Assertion
|
@@ -133,6 +134,7 @@ describe MiniTest::Spec do
|
|
133
134
|
end
|
134
135
|
|
135
136
|
it "needs to verify mismatch" do
|
137
|
+
@assertion_count = 6
|
136
138
|
"blah".wont_match(/\d+/).must_equal false
|
137
139
|
proc { "blah".wont_match(/\w+/) }.must_raise MiniTest::Assertion
|
138
140
|
end
|
@@ -146,4 +148,16 @@ describe MiniTest::Spec do
|
|
146
148
|
1.wont_be_same_as(2).must_equal false
|
147
149
|
proc { 1.wont_be_same_as 1 }.must_raise MiniTest::Assertion
|
148
150
|
end
|
151
|
+
|
152
|
+
it "needs to be sensible about must_include order" do
|
153
|
+
@assertion_count = 6
|
154
|
+
[1, 2, 3].must_include(2).must_equal true
|
155
|
+
proc { [1, 2, 3].must_include 5 }.must_raise MiniTest::Assertion
|
156
|
+
end
|
157
|
+
|
158
|
+
it "needs to be sensible about wont_include order" do
|
159
|
+
@assertion_count = 6
|
160
|
+
[1, 2, 3].wont_include(5).must_equal false
|
161
|
+
proc { [1, 2, 3].wont_include 2 }.must_raise MiniTest::Assertion
|
162
|
+
end
|
149
163
|
end
|
data/test/test_mini_test.rb
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
require 'stringio'
|
2
|
+
require 'pathname'
|
2
3
|
require 'minitest/unit'
|
3
4
|
|
4
5
|
MiniTest::Unit.autorun
|
5
6
|
|
6
|
-
|
7
|
+
module M; end
|
8
|
+
class E < StandardError; include M; end
|
7
9
|
|
10
|
+
class TestMiniTest < MiniTest::Unit::TestCase
|
8
11
|
def setup
|
9
12
|
srand 42
|
10
13
|
MiniTest::Unit::TestCase.reset
|
@@ -19,22 +22,26 @@ class TestMiniTest < MiniTest::Unit::TestCase
|
|
19
22
|
Object.send :remove_const, :ATestCase if defined? ATestCase
|
20
23
|
end
|
21
24
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
"
|
28
|
-
"
|
25
|
+
pwd = Pathname.new(File.expand_path(Dir.pwd))
|
26
|
+
basedir = Pathname.new(File.expand_path(MiniTest::MINI_DIR)) + 'mini'
|
27
|
+
basedir = basedir.relative_path_from(pwd).to_s
|
28
|
+
MINITEST_BASE_DIR = basedir[/\A\./] ? basedir : "./#{basedir}"
|
29
|
+
BT_MIDDLE = ["#{MINITEST_BASE_DIR}/test.rb:165:in `run_test_suites'",
|
30
|
+
"#{MINITEST_BASE_DIR}/test.rb:161:in `each'",
|
31
|
+
"#{MINITEST_BASE_DIR}/test.rb:161:in `run_test_suites'",
|
32
|
+
"#{MINITEST_BASE_DIR}/test.rb:158:in `each'",
|
33
|
+
"#{MINITEST_BASE_DIR}/test.rb:158:in `run_test_suites'",
|
34
|
+
"#{MINITEST_BASE_DIR}/test.rb:139:in `run'",
|
35
|
+
"#{MINITEST_BASE_DIR}/test.rb:106:in `run'"]
|
29
36
|
|
30
37
|
def test_filter_backtrace
|
31
38
|
# this is a semi-lame mix of relative paths.
|
32
39
|
# I cheated by making the autotest parts not have ./
|
33
40
|
bt = (["lib/autotest.rb:571:in `add_exception'",
|
34
41
|
"test/test_autotest.rb:62:in `test_add_exception'",
|
35
|
-
"
|
42
|
+
"#{MINITEST_BASE_DIR}/test.rb:165:in `__send__'"] +
|
36
43
|
BT_MIDDLE +
|
37
|
-
["
|
44
|
+
["#{MINITEST_BASE_DIR}/test.rb:29",
|
38
45
|
"test/test_autotest.rb:422"])
|
39
46
|
bt = util_expand_bt bt
|
40
47
|
|
@@ -56,18 +63,18 @@ class TestMiniTest < MiniTest::Unit::TestCase
|
|
56
63
|
end
|
57
64
|
|
58
65
|
def test_filter_backtrace_all_unit
|
59
|
-
bt = (["
|
66
|
+
bt = (["#{MINITEST_BASE_DIR}/test.rb:165:in `__send__'"] +
|
60
67
|
BT_MIDDLE +
|
61
|
-
["
|
68
|
+
["#{MINITEST_BASE_DIR}/test.rb:29"])
|
62
69
|
ex = bt.clone
|
63
70
|
fu = MiniTest::filter_backtrace(bt)
|
64
71
|
assert_equal ex, fu
|
65
72
|
end
|
66
73
|
|
67
74
|
def test_filter_backtrace_unit_starts
|
68
|
-
bt = (["
|
75
|
+
bt = (["#{MINITEST_BASE_DIR}/test.rb:165:in `__send__'"] +
|
69
76
|
BT_MIDDLE +
|
70
|
-
["
|
77
|
+
["#{MINITEST_BASE_DIR}/mini/test.rb:29",
|
71
78
|
"-e:1"])
|
72
79
|
|
73
80
|
bt = util_expand_bt bt
|
@@ -83,6 +90,7 @@ class TestMiniTest < MiniTest::Unit::TestCase
|
|
83
90
|
assert_equal 'F', @tu.puke('SomeClass', 'method_name', exception)
|
84
91
|
assert_equal 1, @tu.failures
|
85
92
|
assert_match(/^Failure.*Oh no!/m, @tu.report.first)
|
93
|
+
assert_match("method_name(SomeClass) [unhappy]", @tu.report.first)
|
86
94
|
end
|
87
95
|
|
88
96
|
def test_class_puke_with_failure_and_flunk_in_backtrace
|
@@ -95,6 +103,72 @@ class TestMiniTest < MiniTest::Unit::TestCase
|
|
95
103
|
refute @tu.report.any?{|line| line =~ /in .flunk/}
|
96
104
|
end
|
97
105
|
|
106
|
+
def test_class_puke_with_assertion_failed_and_long_backtrace
|
107
|
+
bt = (["test/test_some_class.rb:615:in `method_name'",
|
108
|
+
"#{MINITEST_BASE_DIR}/unit.rb:140:in `assert_raises'",
|
109
|
+
"test/test_some_class.rb:615:in `each'",
|
110
|
+
"test/test_some_class.rb:614:in `test_method_name'",
|
111
|
+
"#{MINITEST_BASE_DIR}/test.rb:165:in `__send__'"] +
|
112
|
+
BT_MIDDLE +
|
113
|
+
["#{MINITEST_BASE_DIR}/test.rb:29"])
|
114
|
+
bt = util_expand_bt bt
|
115
|
+
|
116
|
+
ex_location = util_expand_bt(["test/test_some_class.rb:615"]).first
|
117
|
+
|
118
|
+
exception = MiniTest::Assertion.new "Oh no!"
|
119
|
+
exception.set_backtrace bt
|
120
|
+
assert_equal 'F', @tu.puke('TestSomeClass', 'test_method_name', exception)
|
121
|
+
assert_equal 1, @tu.failures
|
122
|
+
assert_match(/^Failure.*Oh no!/m, @tu.report.first)
|
123
|
+
assert_match("test_method_name(TestSomeClass) [#{ex_location}]", @tu.report.first)
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_class_puke_with_assertion_failed_and_user_defined_assertions
|
127
|
+
bt = (["lib/test/my/util.rb:16:in `another_method_name'",
|
128
|
+
"#{MINITEST_BASE_DIR}/unit.rb:140:in `assert_raises'",
|
129
|
+
"lib/test/my/util.rb:15:in `block in assert_something'",
|
130
|
+
"lib/test/my/util.rb:14:in `each'",
|
131
|
+
"lib/test/my/util.rb:14:in `assert_something'",
|
132
|
+
"test/test_some_class.rb:615:in `each'",
|
133
|
+
"test/test_some_class.rb:614:in `test_method_name'",
|
134
|
+
"#{MINITEST_BASE_DIR}/test.rb:165:in `__send__'"] +
|
135
|
+
BT_MIDDLE +
|
136
|
+
["#{MINITEST_BASE_DIR}/test.rb:29"])
|
137
|
+
bt = util_expand_bt bt
|
138
|
+
|
139
|
+
ex_location = util_expand_bt(["test/test_some_class.rb:615"]).first
|
140
|
+
|
141
|
+
exception = MiniTest::Assertion.new "Oh no!"
|
142
|
+
exception.set_backtrace bt
|
143
|
+
assert_equal 'F', @tu.puke('TestSomeClass', 'test_method_name', exception)
|
144
|
+
assert_equal 1, @tu.failures
|
145
|
+
assert_match(/^Failure.*Oh no!/m, @tu.report.first)
|
146
|
+
assert_match("test_method_name(TestSomeClass) [#{ex_location}]", @tu.report.first)
|
147
|
+
end
|
148
|
+
|
149
|
+
def test_class_puke_with_flunk_and_user_defined_assertions
|
150
|
+
bt = (["lib/test/my/util.rb:16:in `flunk'",
|
151
|
+
"#{MINITEST_BASE_DIR}/unit.rb:140:in `assert_raises'",
|
152
|
+
"lib/test/my/util.rb:15:in `block in assert_something'",
|
153
|
+
"lib/test/my/util.rb:14:in `each'",
|
154
|
+
"lib/test/my/util.rb:14:in `assert_something'",
|
155
|
+
"test/test_some_class.rb:615:in `each'",
|
156
|
+
"test/test_some_class.rb:614:in `test_method_name'",
|
157
|
+
"#{MINITEST_BASE_DIR}/test.rb:165:in `__send__'"] +
|
158
|
+
BT_MIDDLE +
|
159
|
+
["#{MINITEST_BASE_DIR}/test.rb:29"])
|
160
|
+
bt = util_expand_bt bt
|
161
|
+
|
162
|
+
ex_location = util_expand_bt(["test/test_some_class.rb:615"]).first
|
163
|
+
|
164
|
+
exception = MiniTest::Assertion.new "Oh no!"
|
165
|
+
exception.set_backtrace bt
|
166
|
+
assert_equal 'F', @tu.puke('TestSomeClass', 'test_method_name', exception)
|
167
|
+
assert_equal 1, @tu.failures
|
168
|
+
assert_match(/^Failure.*Oh no!/m, @tu.report.first)
|
169
|
+
assert_match("test_method_name(TestSomeClass) [#{ex_location}]", @tu.report.first)
|
170
|
+
end
|
171
|
+
|
98
172
|
def test_class_puke_with_non_failure_exception
|
99
173
|
exception = Exception.new("Oh no again!")
|
100
174
|
assert_equal 'E', @tu.puke('SomeClass', 'method_name', exception)
|
@@ -242,10 +316,10 @@ Finished in 0.00
|
|
242
316
|
"
|
243
317
|
output = @output.string.sub(/Finished in .*/, "Finished in 0.00")
|
244
318
|
output.sub!(/Loaded suite .*/, 'Loaded suite blah')
|
245
|
-
output.sub!(
|
319
|
+
output.sub!(/^(\s+)(?:#{Regexp.union(__FILE__, File.expand_path(__FILE__))}):\d+:/o, '\1FILE:LINE:')
|
320
|
+
output.sub!(/\[(?:#{Regexp.union(__FILE__, File.expand_path(__FILE__))}):\d+\]/o, '[FILE:LINE]')
|
246
321
|
assert_equal(expected, output)
|
247
|
-
|
248
|
-
|
322
|
+
end
|
249
323
|
def test_run_failing_filtered
|
250
324
|
tc = Class.new(MiniTest::Unit::TestCase) do
|
251
325
|
def test_something
|
@@ -420,7 +494,7 @@ class TestMiniTestTestCase < MiniTest::Unit::TestCase
|
|
420
494
|
end
|
421
495
|
|
422
496
|
def test_assert_includes_triggered
|
423
|
-
@assertion_count =
|
497
|
+
@assertion_count = 3
|
424
498
|
|
425
499
|
e = @tc.assert_raises MiniTest::Assertion do
|
426
500
|
@tc.assert_includes [true], false
|
@@ -452,13 +526,34 @@ class TestMiniTestTestCase < MiniTest::Unit::TestCase
|
|
452
526
|
|
453
527
|
def test_assert_match
|
454
528
|
@assertion_count = 2
|
455
|
-
@tc.assert_match "blah blah blah"
|
529
|
+
@tc.assert_match(/\w+/, "blah blah blah")
|
530
|
+
end
|
531
|
+
|
532
|
+
def test_assert_match_object
|
533
|
+
@assertion_count = 2
|
534
|
+
|
535
|
+
pattern = Object.new
|
536
|
+
def pattern.=~(other) true end
|
537
|
+
|
538
|
+
@tc.assert_match pattern, 5
|
539
|
+
end
|
540
|
+
|
541
|
+
def test_assert_match_object_triggered
|
542
|
+
@assertion_count = 2
|
543
|
+
|
544
|
+
pattern = Object.new
|
545
|
+
def pattern.=~(other) false end
|
546
|
+
def pattern.inspect; "<<Object>>" end
|
547
|
+
|
548
|
+
util_assert_triggered 'Expected <<Object>> to match 5.' do
|
549
|
+
@tc.assert_match pattern, 5
|
550
|
+
end
|
456
551
|
end
|
457
552
|
|
458
553
|
def test_assert_match_triggered
|
459
554
|
@assertion_count = 2
|
460
555
|
util_assert_triggered 'Expected /\d+/ to match "blah blah blah".' do
|
461
|
-
@tc.assert_match "blah blah blah"
|
556
|
+
@tc.assert_match(/\d+/, "blah blah blah")
|
462
557
|
end
|
463
558
|
end
|
464
559
|
|
@@ -483,31 +578,35 @@ class TestMiniTestTestCase < MiniTest::Unit::TestCase
|
|
483
578
|
end
|
484
579
|
|
485
580
|
def test_assert_raises
|
486
|
-
@assertion_count = 2
|
487
|
-
|
488
581
|
@tc.assert_raises RuntimeError do
|
489
582
|
raise "blah"
|
490
583
|
end
|
491
584
|
end
|
492
585
|
|
493
|
-
def
|
494
|
-
@
|
586
|
+
def test_assert_raises_module
|
587
|
+
@tc.assert_raises M do
|
588
|
+
raise E
|
589
|
+
end
|
590
|
+
end
|
495
591
|
|
592
|
+
def test_assert_raises_triggered_different
|
496
593
|
e = assert_raises MiniTest::Assertion do
|
497
594
|
@tc.assert_raises RuntimeError do
|
498
595
|
raise SyntaxError, "icky"
|
499
596
|
end
|
500
597
|
end
|
501
598
|
|
502
|
-
expected = "
|
599
|
+
expected = "[RuntimeError] exception expected, not
|
503
600
|
Class: <SyntaxError>
|
504
601
|
Message: <\"icky\">
|
505
602
|
---Backtrace---
|
506
603
|
FILE:LINE:in `test_assert_raises_triggered_different'
|
507
|
-
|
508
|
-
|
604
|
+
---------------"
|
605
|
+
|
606
|
+
actual = e.message.gsub(/^.+:\d+/, 'FILE:LINE')
|
607
|
+
actual.gsub!(/block \(\d+ levels\) in /, '') if RUBY_VERSION =~ /^1\.9/
|
509
608
|
|
510
|
-
assert_equal expected,
|
609
|
+
assert_equal expected, actual
|
511
610
|
end
|
512
611
|
|
513
612
|
def test_assert_raises_triggered_none
|
@@ -522,6 +621,26 @@ Expected [RuntimeError] to include SyntaxError."
|
|
522
621
|
assert_equal expected, e.message
|
523
622
|
end
|
524
623
|
|
624
|
+
def test_assert_raises_triggered_subclass
|
625
|
+
e = assert_raises MiniTest::Assertion do
|
626
|
+
@tc.assert_raises StandardError do
|
627
|
+
raise E
|
628
|
+
end
|
629
|
+
end
|
630
|
+
|
631
|
+
expected = "[StandardError] exception expected, not
|
632
|
+
Class: <E>
|
633
|
+
Message: <\"E\">
|
634
|
+
---Backtrace---
|
635
|
+
FILE:LINE:in `test_assert_raises_triggered_subclass'
|
636
|
+
---------------"
|
637
|
+
|
638
|
+
actual = e.message.gsub(/^.+:\d+/, 'FILE:LINE')
|
639
|
+
actual.gsub!(/block \(\d+ levels\) in /, '') if RUBY_VERSION =~ /^1\.9/
|
640
|
+
|
641
|
+
assert_equal expected, actual
|
642
|
+
end
|
643
|
+
|
525
644
|
def test_assert_respond_to
|
526
645
|
@tc.assert_respond_to "blah", :empty?
|
527
646
|
end
|
@@ -727,7 +846,7 @@ Expected [RuntimeError] to include SyntaxError."
|
|
727
846
|
end
|
728
847
|
|
729
848
|
def test_refute_includes_triggered
|
730
|
-
@assertion_count =
|
849
|
+
@assertion_count = 3
|
731
850
|
|
732
851
|
e = @tc.assert_raises MiniTest::Assertion do
|
733
852
|
@tc.refute_includes [true], true
|
@@ -758,12 +877,43 @@ Expected [RuntimeError] to include SyntaxError."
|
|
758
877
|
end
|
759
878
|
|
760
879
|
def test_refute_match
|
761
|
-
@
|
880
|
+
@assertion_count = 2
|
881
|
+
@tc.refute_match(/\d+/, "blah blah blah")
|
882
|
+
end
|
883
|
+
|
884
|
+
def test_refute_match_object
|
885
|
+
@assertion_count = 2
|
886
|
+
@tc.refute_match Object.new, 5 # default #=~ returns false
|
887
|
+
end
|
888
|
+
|
889
|
+
def test_assert_object_triggered
|
890
|
+
@assertion_count = 2
|
891
|
+
|
892
|
+
pattern = Object.new
|
893
|
+
def pattern.=~(other) false end
|
894
|
+
def pattern.inspect; "<<Object>>" end
|
895
|
+
|
896
|
+
util_assert_triggered 'Expected <<Object>> to match 5.' do
|
897
|
+
@tc.assert_match pattern, 5
|
898
|
+
end
|
899
|
+
end
|
900
|
+
|
901
|
+
def test_refute_match_object_triggered
|
902
|
+
@assertion_count = 2
|
903
|
+
|
904
|
+
pattern = Object.new
|
905
|
+
def pattern.=~(other) true end
|
906
|
+
def pattern.inspect; "<<Object>>" end
|
907
|
+
|
908
|
+
util_assert_triggered 'Expected <<Object>> to not match 5.' do
|
909
|
+
@tc.refute_match pattern, 5
|
910
|
+
end
|
762
911
|
end
|
763
912
|
|
764
913
|
def test_refute_match_triggered
|
914
|
+
@assertion_count = 2
|
765
915
|
util_assert_triggered 'Expected /\w+/ to not match "blah blah blah".' do
|
766
|
-
@tc.refute_match "blah blah blah"
|
916
|
+
@tc.refute_match(/\w+/, "blah blah blah")
|
767
917
|
end
|
768
918
|
end
|
769
919
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minitest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Davis
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2009-01-20 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 1.8.
|
23
|
+
version: 1.8.2
|
24
24
|
version:
|
25
25
|
description: minitest/unit is a small and fast replacement for ruby's huge and slow test/unit. This is meant to be clean and easy to use both as a regular test writer and for language implementors that need a minimal set of methods to bootstrap a working unit test suite. mini/spec is a functionally complete spec engine. mini/mock, by Steven Baker, is a beautifully tiny mock object framework. (This package was called miniunit once upon a time)
|
26
26
|
email:
|
@@ -39,6 +39,7 @@ files:
|
|
39
39
|
- Manifest.txt
|
40
40
|
- README.txt
|
41
41
|
- Rakefile
|
42
|
+
- lib/minitest/autorun.rb
|
42
43
|
- lib/minitest/mock.rb
|
43
44
|
- lib/minitest/spec.rb
|
44
45
|
- lib/minitest/unit.rb
|
@@ -68,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
68
69
|
requirements: []
|
69
70
|
|
70
71
|
rubyforge_project: bfts
|
71
|
-
rubygems_version: 1.3.
|
72
|
+
rubygems_version: 1.3.1
|
72
73
|
signing_key:
|
73
74
|
specification_version: 2
|
74
75
|
summary: minitest/unit is a small and fast replacement for ruby's huge and slow test/unit
|