minitest 4.2.0 → 4.3.0
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.tar.gz.sig +0 -0
- data/History.txt +9 -0
- data/README.txt +79 -37
- data/lib/minitest/mock.rb +25 -6
- data/lib/minitest/spec.rb +1 -1
- data/lib/minitest/unit.rb +19 -18
- data/test/minitest/test_minitest_mock.rb +62 -0
- metadata +18 -7
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/History.txt
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
=== 4.3.0 / 2012-11-17
|
2
|
+
|
3
|
+
* 4 minor enhancements:
|
4
|
+
|
5
|
+
* Allow #autorun to run even if loaded with other test libs that call exit. (sunaku)
|
6
|
+
* Do not include Expectations in Object if $MT_NO_EXPECTATIONS is set (experimental?)
|
7
|
+
* Gave some much needed love to assert_raises.
|
8
|
+
* Mock#expect can take a block to custom-validate args. (gmoothart)
|
9
|
+
|
1
10
|
=== 4.2.0 / 2012-11-02
|
2
11
|
|
3
12
|
* 4 major enhancements:
|
data/README.txt
CHANGED
@@ -49,6 +49,17 @@ discovery.
|
|
49
49
|
|
50
50
|
-- Piotr Szotkowski
|
51
51
|
|
52
|
+
Comparing to rspec:
|
53
|
+
|
54
|
+
rspec is a testing DSL. minitest is ruby.
|
55
|
+
|
56
|
+
-- Adam Hawkins, "Bow Before MiniTest"
|
57
|
+
|
58
|
+
minitest doesn't reinvent anything that ruby already provides, like:
|
59
|
+
classes, modules, inheritance, methods. This means you only have to
|
60
|
+
learn ruby to use minitest and all of your regular OO practices like
|
61
|
+
extract-method refactorings still apply.
|
62
|
+
|
52
63
|
== FEATURES/PROBLEMS:
|
53
64
|
|
54
65
|
* minitest/autorun - the easy and explicit way to run all your tests.
|
@@ -264,43 +275,74 @@ fixture loading:
|
|
264
275
|
|
265
276
|
== Known Extensions:
|
266
277
|
|
267
|
-
minitest-capistrano
|
268
|
-
minitest-capybara
|
269
|
-
minitest-chef-handler
|
270
|
-
minitest-ci
|
271
|
-
minitest-colorize
|
272
|
-
minitest-context
|
273
|
-
|
274
|
-
minitest-debugger
|
275
|
-
|
276
|
-
minitest-display
|
277
|
-
minitest-emoji
|
278
|
-
minitest-excludes
|
279
|
-
|
280
|
-
minitest-firemock
|
281
|
-
minitest-growl
|
282
|
-
minitest-instrument
|
283
|
-
|
284
|
-
minitest-instrument-db
|
285
|
-
|
286
|
-
minitest-libnotify
|
287
|
-
minitest-macruby
|
288
|
-
minitest-matchers
|
289
|
-
minitest-metadata
|
290
|
-
minitest-mongoid
|
291
|
-
minitest-must_not
|
292
|
-
minitest-predicates
|
293
|
-
minitest-
|
294
|
-
minitest-rails
|
295
|
-
minitest-reporters
|
296
|
-
minitest-rg
|
297
|
-
minitest-
|
298
|
-
minitest-
|
299
|
-
minitest-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
278
|
+
minitest-capistrano :: Assertions and expectations for testing Capistrano recipes
|
279
|
+
minitest-capybara :: Capybara matchers support for minitest unit and spec
|
280
|
+
minitest-chef-handler :: Run Minitest suites as Chef report handlers
|
281
|
+
minitest-ci :: CI reporter plugin for MiniTest.
|
282
|
+
minitest-colorize :: Colorize MiniTest output and show failing tests instantly.
|
283
|
+
minitest-context :: Defines contexts for code reuse in MiniTest
|
284
|
+
specs that share common expectations.
|
285
|
+
minitest-debugger :: Wraps assert so failed assertions drop into
|
286
|
+
the ruby debugger.
|
287
|
+
minitest-display :: Patches MiniTest to allow for an easily configurable output.
|
288
|
+
minitest-emoji :: Print out emoji for your test passes, fails, and skips.
|
289
|
+
minitest-excludes :: Clean API for excluding certain tests you
|
290
|
+
don't want to run under certain conditions.
|
291
|
+
minitest-firemock :: Makes your MiniTest mocks more resilient.
|
292
|
+
minitest-growl :: Test notifier for minitest via growl.
|
293
|
+
minitest-instrument :: Instrument ActiveSupport::Notifications when
|
294
|
+
test method is executed
|
295
|
+
minitest-instrument-db :: Store information about speed of test
|
296
|
+
execution provided by minitest-instrument in database
|
297
|
+
minitest-libnotify :: Test notifier for minitest via libnotify.
|
298
|
+
minitest-macruby :: Provides extensions to minitest for macruby UI testing.
|
299
|
+
minitest-matchers :: Adds support for RSpec-style matchers to minitest.
|
300
|
+
minitest-metadata :: Annotate tests with metadata (key-value).
|
301
|
+
minitest-mongoid :: Mongoid assertion matchers for MiniTest
|
302
|
+
minitest-must_not :: Provides must_not as an alias for wont in MiniTest
|
303
|
+
minitest-predicates :: Adds support for .predicate? methods
|
304
|
+
minitest-rails :: MiniTest integration for Rails 3.x
|
305
|
+
minitest-rails-capybara :: Capybara integration for MiniTest::Rails
|
306
|
+
minitest-reporters :: Create customizable MiniTest output formats
|
307
|
+
minitest-rg :: redgreen minitest
|
308
|
+
minitest-shouldify :: Adding all manner of shoulds to MiniTest (bad idea)
|
309
|
+
minitest-spec-magic :: Minitest::Spec extensions for Rails and beyond
|
310
|
+
minitest-tags :: add tags for minitest
|
311
|
+
minitest-wscolor :: Yet another test colorizer.
|
312
|
+
minitest_owrapper :: Get tests results as a TestResult object.
|
313
|
+
minitest_should :: Shoulda style syntax for minitest test::unit.
|
314
|
+
minitest_tu_shim :: minitest_tu_shim bridges between test/unit and minitest.
|
315
|
+
mongoid-minitest :: MiniTest matchers for Mongoid.
|
316
|
+
pry-rescue :: A pry plugin w/ minitest support. See pry-rescue/minitest.rb.
|
317
|
+
|
318
|
+
== Unknown Extensions:
|
319
|
+
|
320
|
+
Authors... Please send me a pull request with a description of your minitest extension.
|
321
|
+
|
322
|
+
* assay-minitest
|
323
|
+
* capybara_minitest_spec
|
324
|
+
* detroit-minitest
|
325
|
+
* em-minitest-spec
|
326
|
+
* flexmock-minitest
|
327
|
+
* guard-minitest
|
328
|
+
* guard-minitest-decisiv
|
329
|
+
* minitest-activemodel
|
330
|
+
* minitest-ar-assertions
|
331
|
+
* minitest-around
|
332
|
+
* minitest-capybara-unit
|
333
|
+
* minitest-colorer
|
334
|
+
* minitest-deluxe
|
335
|
+
* minitest-extra-assertions
|
336
|
+
* minitest-nc
|
337
|
+
* minitest-rails-shoulda
|
338
|
+
* minitest-spec
|
339
|
+
* minitest-spec-context
|
340
|
+
* minitest-spec-rails
|
341
|
+
* minitest-spec-should
|
342
|
+
* minitest-sugar
|
343
|
+
* minitest_should
|
344
|
+
* mongoid-minitest
|
345
|
+
* spork-minitest
|
304
346
|
|
305
347
|
== REQUIREMENTS:
|
306
348
|
|
data/lib/minitest/mock.rb
CHANGED
@@ -24,8 +24,8 @@ module MiniTest
|
|
24
24
|
end
|
25
25
|
|
26
26
|
##
|
27
|
-
# Expect that method +name+ is called, optionally with +args
|
28
|
-
# +retval+.
|
27
|
+
# Expect that method +name+ is called, optionally with +args+ or a
|
28
|
+
# +blk+, and returns +retval+.
|
29
29
|
#
|
30
30
|
# @mock.expect(:meaning_of_life, 42)
|
31
31
|
# @mock.meaning_of_life # => 42
|
@@ -33,6 +33,10 @@ module MiniTest
|
|
33
33
|
# @mock.expect(:do_something_with, true, [some_obj, true])
|
34
34
|
# @mock.do_something_with(some_obj, true) # => true
|
35
35
|
#
|
36
|
+
# @mock.expect(:do_something_else, true) do |a1, a2|
|
37
|
+
# a1 == "buggs" && a2 == :bunny
|
38
|
+
# end
|
39
|
+
#
|
36
40
|
# +args+ is compared to the expected args using case equality (ie, the
|
37
41
|
# '===' operator), allowing for less specific expectations.
|
38
42
|
#
|
@@ -44,9 +48,14 @@ module MiniTest
|
|
44
48
|
# @mock.uses_one_string("bar") # => true
|
45
49
|
# @mock.verify # => raises MockExpectationError
|
46
50
|
|
47
|
-
def expect(name, retval, args=[])
|
48
|
-
|
49
|
-
|
51
|
+
def expect(name, retval, args=[], &blk)
|
52
|
+
if block_given?
|
53
|
+
raise ArgumentError, "args ignored when block given" unless args.empty?
|
54
|
+
@expected_calls[name] << { :retval => retval, :block => blk }
|
55
|
+
else
|
56
|
+
raise ArgumentError, "args must be an array" unless Array === args
|
57
|
+
@expected_calls[name] << { :retval => retval, :args => args }
|
58
|
+
end
|
50
59
|
self
|
51
60
|
end
|
52
61
|
|
@@ -96,7 +105,17 @@ module MiniTest
|
|
96
105
|
[sym, args]
|
97
106
|
end
|
98
107
|
|
99
|
-
expected_args, retval =
|
108
|
+
expected_args, retval, val_block =
|
109
|
+
expected_call.values_at(:args, :retval, :block)
|
110
|
+
|
111
|
+
if val_block then
|
112
|
+
raise MockExpectationError, "mocked method %p failed block w/ %p" %
|
113
|
+
[sym, args] unless val_block.call(args)
|
114
|
+
|
115
|
+
# keep "verify" happy
|
116
|
+
@actual_calls[sym] << expected_call
|
117
|
+
return retval
|
118
|
+
end
|
100
119
|
|
101
120
|
if expected_args.size != args.size then
|
102
121
|
raise ArgumentError, "mocked method %p expects %d arguments, got %d" %
|
data/lib/minitest/spec.rb
CHANGED
data/lib/minitest/unit.rb
CHANGED
@@ -358,30 +358,30 @@ module MiniTest
|
|
358
358
|
def assert_raises *exp
|
359
359
|
msg = "#{exp.pop}.\n" if String === exp.last
|
360
360
|
|
361
|
-
should_raise = false
|
362
361
|
begin
|
363
362
|
yield
|
364
|
-
should_raise = true
|
365
363
|
rescue MiniTest::Skip => e
|
366
|
-
|
367
|
-
|
368
|
-
if exp.include? MiniTest::Skip then
|
369
|
-
return e
|
370
|
-
else
|
371
|
-
raise e
|
372
|
-
end
|
364
|
+
return e if exp.include? MiniTest::Skip
|
365
|
+
raise e
|
373
366
|
rescue Exception => e
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
367
|
+
expected = exp.any? { |ex|
|
368
|
+
if ex.instance_of? Module then
|
369
|
+
e.kind_of? ex
|
370
|
+
else
|
371
|
+
e.instance_of? ex
|
372
|
+
end
|
373
|
+
}
|
374
|
+
|
375
|
+
assert expected, proc {
|
376
|
+
exception_details(e, "#{msg}#{mu_pp(exp)} exception expected, not")
|
377
|
+
}
|
378
378
|
|
379
379
|
return e
|
380
380
|
end
|
381
381
|
|
382
382
|
exp = exp.first if exp.size == 1
|
383
|
-
|
384
|
-
|
383
|
+
|
384
|
+
flunk "#{msg}#{mu_pp(exp)} expected but nothing was raised."
|
385
385
|
end
|
386
386
|
|
387
387
|
##
|
@@ -439,7 +439,7 @@ module MiniTest
|
|
439
439
|
begin
|
440
440
|
yield
|
441
441
|
rescue ThreadError => e # wtf?!? 1.8 + threads == suck
|
442
|
-
default += ", not
|
442
|
+
default += ", not \:#{e.message[/uncaught throw \`(\w+?)\'/, 1]}"
|
443
443
|
rescue ArgumentError => e # 1.9 exception
|
444
444
|
default += ", not #{e.message.split(/ /).last}"
|
445
445
|
rescue NameError => e # 1.8 exception
|
@@ -729,7 +729,7 @@ module MiniTest
|
|
729
729
|
end
|
730
730
|
|
731
731
|
class Unit # :nodoc:
|
732
|
-
VERSION = "4.
|
732
|
+
VERSION = "4.3.0" # :nodoc:
|
733
733
|
|
734
734
|
attr_accessor :report, :failures, :errors, :skips # :nodoc:
|
735
735
|
attr_accessor :test_count, :assertion_count # :nodoc:
|
@@ -764,7 +764,8 @@ module MiniTest
|
|
764
764
|
|
765
765
|
def self.autorun
|
766
766
|
at_exit {
|
767
|
-
|
767
|
+
# don't run if there was a non-exit exception
|
768
|
+
next if $! and not $!.kind_of? SystemExit
|
768
769
|
|
769
770
|
# the order here is important. The at_exit handler must be
|
770
771
|
# installed before anyone else gets a chance to install their
|
@@ -198,6 +198,68 @@ class TestMiniTestMock < MiniTest::Unit::TestCase
|
|
198
198
|
assert_equal exp, e.message
|
199
199
|
end
|
200
200
|
|
201
|
+
def test_verify_passes_when_mock_block_returns_true
|
202
|
+
mock = MiniTest::Mock.new
|
203
|
+
mock.expect :foo, nil do
|
204
|
+
true
|
205
|
+
end
|
206
|
+
|
207
|
+
mock.foo
|
208
|
+
|
209
|
+
assert mock.verify
|
210
|
+
end
|
211
|
+
|
212
|
+
def test_mock_block_is_passed_function_params
|
213
|
+
arg1, arg2, arg3 = :bar, [1,2,3], {:a => 'a'}
|
214
|
+
mock = MiniTest::Mock.new
|
215
|
+
mock.expect :foo, nil do |a1, a2, a3|
|
216
|
+
a1 == arg1 &&
|
217
|
+
a2 == arg2 &&
|
218
|
+
a3 == arg3
|
219
|
+
end
|
220
|
+
|
221
|
+
mock.foo arg1, arg2, arg3
|
222
|
+
|
223
|
+
assert mock.verify
|
224
|
+
end
|
225
|
+
|
226
|
+
def test_verify_fails_when_mock_block_returns_false
|
227
|
+
mock = MiniTest::Mock.new
|
228
|
+
mock.expect :foo, nil do
|
229
|
+
false
|
230
|
+
end
|
231
|
+
|
232
|
+
e = assert_raises(MockExpectationError) { mock.foo }
|
233
|
+
exp = "mocked method :foo failed block w/ []"
|
234
|
+
|
235
|
+
assert_equal exp, e.message
|
236
|
+
end
|
237
|
+
|
238
|
+
def test_mock_block_throws_if_args_passed
|
239
|
+
mock = MiniTest::Mock.new
|
240
|
+
|
241
|
+
e = assert_raises(ArgumentError) do
|
242
|
+
mock.expect :foo, nil, [:a, :b, :c] do
|
243
|
+
true
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
247
|
+
exp = "args ignored when block given"
|
248
|
+
|
249
|
+
assert_equal exp, e.message
|
250
|
+
end
|
251
|
+
|
252
|
+
def test_mock_returns_retval_when_called_with_block
|
253
|
+
mock = MiniTest::Mock.new
|
254
|
+
mock.expect(:foo, 32) do
|
255
|
+
true
|
256
|
+
end
|
257
|
+
|
258
|
+
rs = mock.foo
|
259
|
+
|
260
|
+
assert_equal rs, 32
|
261
|
+
end
|
262
|
+
|
201
263
|
def util_verify_bad exp
|
202
264
|
e = assert_raises MockExpectationError do
|
203
265
|
@mock.verify
|
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: 51
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 4
|
8
|
-
-
|
8
|
+
- 3
|
9
9
|
- 0
|
10
|
-
version: 4.
|
10
|
+
version: 4.3.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: 2012-11-
|
39
|
+
date: 2012-11-17 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: 1
|
65
65
|
segments:
|
66
66
|
- 3
|
67
|
-
-
|
68
|
-
version: "3.
|
67
|
+
- 3
|
68
|
+
version: "3.3"
|
69
69
|
type: :development
|
70
70
|
version_requirements: *id002
|
71
71
|
description: |-
|
@@ -111,6 +111,17 @@ description: |-
|
|
111
111
|
framework that I can actually read in full in one sitting!"
|
112
112
|
|
113
113
|
-- Piotr Szotkowski
|
114
|
+
|
115
|
+
Comparing to rspec:
|
116
|
+
|
117
|
+
rspec is a testing DSL. minitest is ruby.
|
118
|
+
|
119
|
+
-- Adam Hawkins, "Bow Before MiniTest"
|
120
|
+
|
121
|
+
minitest doesn't reinvent anything that ruby already provides, like:
|
122
|
+
classes, modules, inheritance, methods. This means you only have to
|
123
|
+
learn ruby to use minitest and all of your regular OO practices like
|
124
|
+
extract-method refactorings still apply.
|
114
125
|
email:
|
115
126
|
- ryand-ruby@zenspider.com
|
116
127
|
executables: []
|
metadata.gz.sig
CHANGED
Binary file
|