minitest 5.0.4 → 5.0.5
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/.autotest +20 -6
- data/History.txt +11 -0
- data/README.txt +4 -4
- data/Rakefile +3 -3
- data/design_rationale.rb +1 -1
- data/lib/minitest.rb +1 -1
- data/lib/minitest/mock.rb +24 -4
- data/lib/minitest/spec.rb +2 -2
- data/test/minitest/test_minitest_mock.rb +59 -14
- data/test/minitest/test_minitest_spec.rb +6 -0
- metadata +4 -4
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/.autotest
CHANGED
@@ -6,12 +6,26 @@ require 'autotest/rcov' if ENV['RCOV']
|
|
6
6
|
Autotest.add_hook :initialize do |at|
|
7
7
|
at.testlib = 'minitest/autorun'
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
9
|
+
bench_tests = %w(TestMinitestBenchmark)
|
10
|
+
mock_tests = %w(TestMinitestMock TestMinitestStub)
|
11
|
+
spec_tests = %w(TestMinitestReporter TestMetaStatic TestMeta
|
12
|
+
TestSpecInTestCase)
|
13
|
+
unit_tests = %w(TestMinitestGuard TestMinitestRunnable
|
14
|
+
TestMinitestRunner TestMinitestTest TestMinitestUnit
|
15
|
+
TestMinitestUnitInherited TestMinitestUnitOrder
|
16
|
+
TestMinitestUnitRecording TestMinitestUnitTestCase)
|
17
|
+
|
18
|
+
{
|
19
|
+
bench_tests => "test/minitest/test_minitest_benchmark.rb",
|
20
|
+
mock_tests => "test/minitest/test_minitest_mock.rb",
|
21
|
+
spec_tests => "test/minitest/test_minitest_reporter.rb",
|
22
|
+
unit_tests => "test/minitest/test_minitest_unit.rb",
|
23
|
+
}.each do |klasses, file|
|
24
|
+
klasses.each do |klass|
|
25
|
+
at.extra_class_map[klass] = file
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
15
29
|
at.add_exception 'coverage.info'
|
16
30
|
at.add_exception 'coverage'
|
17
31
|
end
|
data/History.txt
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
=== 5.0.5 / 2013-06-20
|
2
|
+
|
3
|
+
* 6 bug fixes:
|
4
|
+
|
5
|
+
* DOH! Fixed the rest of the new casing on Minitest. (splattael)
|
6
|
+
* Fixed typo on minitest/mock rdoc. (mrgilman/guiceolin)
|
7
|
+
* Make Spec::DSL.describe_stack thread local to avoid failing on my own tests.
|
8
|
+
* Make a fake Time.now local to the tests so they won't interfere with real reporter timings.
|
9
|
+
* Make everything mockable by wrapping all 'special' methods in a smarter wrapper. (bestie)
|
10
|
+
* Raise ArgumentError if let name starts with 'test'. (johnmaxwell)
|
11
|
+
|
1
12
|
=== 5.0.4 / 2013-06-07
|
2
13
|
|
3
14
|
* 5 minor enhancements:
|
data/README.txt
CHANGED
@@ -194,7 +194,7 @@ Output is tab-delimited to make it easy to paste into a spreadsheet.
|
|
194
194
|
|
195
195
|
describe MemeAsker do
|
196
196
|
before do
|
197
|
-
@meme =
|
197
|
+
@meme = Minitest::Mock.new
|
198
198
|
@meme_asker = MemeAsker.new @meme
|
199
199
|
end
|
200
200
|
|
@@ -328,18 +328,18 @@ Expectations are put on Object (one level down) so the Worker
|
|
328
328
|
fails.
|
329
329
|
|
330
330
|
You can bypass `SimpleDelegate#method_missing` by extending the worker
|
331
|
-
with `
|
331
|
+
with `Minitest::Expectations`. You can either do that in your setup at
|
332
332
|
the instance level, like:
|
333
333
|
|
334
334
|
before do
|
335
335
|
@worker = Worker.new(Object.new)
|
336
|
-
@worker.extend
|
336
|
+
@worker.extend Minitest::Expectations
|
337
337
|
end
|
338
338
|
|
339
339
|
or you can extend the Worker class (within the test file!), like:
|
340
340
|
|
341
341
|
class Worker
|
342
|
-
include ::
|
342
|
+
include ::Minitest::Expectations
|
343
343
|
end
|
344
344
|
|
345
345
|
=== How to share code across test classes?
|
data/Rakefile
CHANGED
@@ -38,8 +38,8 @@ task :specs do
|
|
38
38
|
/must_raises/ => 'must_raise',
|
39
39
|
}
|
40
40
|
|
41
|
-
expectations =
|
42
|
-
assertions =
|
41
|
+
expectations = Minitest::Expectations.public_instance_methods.map(&:to_s)
|
42
|
+
assertions = Minitest::Assertions.public_instance_methods.map(&:to_s)
|
43
43
|
|
44
44
|
assertions.sort.each do |assertion|
|
45
45
|
expectation = case assertion
|
@@ -63,7 +63,7 @@ task :specs do
|
|
63
63
|
puts
|
64
64
|
puts "##"
|
65
65
|
puts "# :method: #{expectation}"
|
66
|
-
puts "# See
|
66
|
+
puts "# See Minitest::Assertions##{assertion}"
|
67
67
|
puts
|
68
68
|
puts "infect_an_assertion #{args.join ", "}"
|
69
69
|
end
|
data/design_rationale.rb
CHANGED
data/lib/minitest.rb
CHANGED
data/lib/minitest/mock.rb
CHANGED
@@ -10,10 +10,28 @@ module Minitest # :nodoc:
|
|
10
10
|
class Mock
|
11
11
|
alias :__respond_to? :respond_to?
|
12
12
|
|
13
|
-
|
13
|
+
overridden_methods = %w(
|
14
|
+
===
|
15
|
+
inspect
|
16
|
+
object_id
|
17
|
+
public_send
|
18
|
+
respond_to_missing?
|
19
|
+
send
|
20
|
+
to_s
|
21
|
+
)
|
14
22
|
|
15
23
|
instance_methods.each do |m|
|
16
|
-
undef_method m unless
|
24
|
+
undef_method m unless overridden_methods.include?(m.to_s) || m =~ /^__/
|
25
|
+
end
|
26
|
+
|
27
|
+
overridden_methods.map(&:to_sym).each do |method_id|
|
28
|
+
define_method method_id do |*args, &b|
|
29
|
+
if @expected_calls.has_key? method_id then
|
30
|
+
method_missing(method_id, *args, &b)
|
31
|
+
else
|
32
|
+
super(*args, &b)
|
33
|
+
end
|
34
|
+
end
|
17
35
|
end
|
18
36
|
|
19
37
|
def initialize # :nodoc:
|
@@ -42,11 +60,13 @@ module Minitest # :nodoc:
|
|
42
60
|
# @mock.uses_any_string("foo") # => true
|
43
61
|
# @mock.verify # => true
|
44
62
|
#
|
45
|
-
# @mock.expect(:uses_one_string, true, ["foo"]
|
63
|
+
# @mock.expect(:uses_one_string, true, ["foo"])
|
46
64
|
# @mock.uses_one_string("bar") # => true
|
47
65
|
# @mock.verify # => raises MockExpectationError
|
48
66
|
|
49
67
|
def expect(name, retval, args=[], &blk)
|
68
|
+
name = name.to_sym
|
69
|
+
|
50
70
|
if block_given?
|
51
71
|
raise ArgumentError, "args ignored when block given" unless args.empty?
|
52
72
|
@expected_calls[name] << { :retval => retval, :block => blk }
|
@@ -138,7 +158,7 @@ module Minitest # :nodoc:
|
|
138
158
|
end
|
139
159
|
|
140
160
|
def respond_to?(sym, include_private = false) # :nodoc:
|
141
|
-
return true if @expected_calls.has_key?
|
161
|
+
return true if @expected_calls.has_key? sym.to_sym
|
142
162
|
return __respond_to?(sym, include_private)
|
143
163
|
end
|
144
164
|
end
|
data/lib/minitest/spec.rb
CHANGED
@@ -143,9 +143,8 @@ class Minitest::Spec < Minitest::Test
|
|
143
143
|
}.last
|
144
144
|
end
|
145
145
|
|
146
|
-
@@describe_stack = []
|
147
146
|
def describe_stack # :nodoc:
|
148
|
-
|
147
|
+
Thread.current[:describe_stack] ||= []
|
149
148
|
end
|
150
149
|
|
151
150
|
##
|
@@ -223,6 +222,7 @@ class Minitest::Spec < Minitest::Test
|
|
223
222
|
# Why use let instead of def? I honestly don't know.
|
224
223
|
|
225
224
|
def let name, &block
|
225
|
+
raise ArgumentError, 'name cannot begin with "test"' if name.to_s =~ /\Atest/
|
226
226
|
define_method name do
|
227
227
|
@_memoized ||= {}
|
228
228
|
@_memoized.fetch(name) { |k| @_memoized[k] = instance_eval(&block) }
|
@@ -74,6 +74,49 @@ class TestMinitestMock < Minitest::Test
|
|
74
74
|
assert mock.verify
|
75
75
|
end
|
76
76
|
|
77
|
+
def test_set_expectation_on_special_methods
|
78
|
+
mock = Minitest::Mock.new
|
79
|
+
|
80
|
+
mock.expect :object_id, "received object_id"
|
81
|
+
assert_equal "received object_id", mock.object_id
|
82
|
+
|
83
|
+
mock.expect :respond_to_missing?, "received respond_to_missing?"
|
84
|
+
assert_equal "received respond_to_missing?", mock.respond_to_missing?
|
85
|
+
|
86
|
+
mock.expect :===, "received ==="
|
87
|
+
assert_equal "received ===", mock.===
|
88
|
+
|
89
|
+
mock.expect :inspect, "received inspect"
|
90
|
+
assert_equal "received inspect", mock.inspect
|
91
|
+
|
92
|
+
mock.expect :to_s, "received to_s"
|
93
|
+
assert_equal "received to_s", mock.to_s
|
94
|
+
|
95
|
+
mock.expect :public_send, "received public_send"
|
96
|
+
assert_equal "received public_send", mock.public_send
|
97
|
+
|
98
|
+
mock.expect :send, "received send"
|
99
|
+
assert_equal "received send", mock.send
|
100
|
+
|
101
|
+
assert mock.verify
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_expectations_can_be_satisfied_via_send
|
105
|
+
@mock.send :foo
|
106
|
+
@mock.send :meaning_of_life
|
107
|
+
|
108
|
+
assert @mock.verify
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_expectations_can_be_satisfied_via_public_send
|
112
|
+
skip if RUBY_VERSION < "1.9"
|
113
|
+
|
114
|
+
@mock.public_send :foo
|
115
|
+
@mock.public_send :meaning_of_life
|
116
|
+
|
117
|
+
assert @mock.verify
|
118
|
+
end
|
119
|
+
|
77
120
|
def test_blow_up_on_wrong_arguments
|
78
121
|
@mock.foo
|
79
122
|
@mock.meaning_of_life
|
@@ -286,18 +329,22 @@ class TestMinitestStub < Minitest::Test
|
|
286
329
|
assert_equal @assertion_count, @tc.assertions
|
287
330
|
end
|
288
331
|
|
332
|
+
class Time
|
333
|
+
def self.now
|
334
|
+
24
|
335
|
+
end
|
336
|
+
end
|
337
|
+
|
289
338
|
def assert_stub val_or_callable
|
290
339
|
@assertion_count += 1
|
291
340
|
|
292
|
-
|
293
|
-
t = Time.now.to_i
|
294
|
-
|
295
|
-
Time.stub :now, val_or_callable do
|
296
|
-
@tc.assert_equal 42, Time.now
|
297
|
-
end
|
341
|
+
t = Time.now.to_i
|
298
342
|
|
299
|
-
|
343
|
+
Time.stub :now, val_or_callable do
|
344
|
+
@tc.assert_equal 42, Time.now
|
300
345
|
end
|
346
|
+
|
347
|
+
@tc.assert_operator Time.now.to_i, :>=, t
|
301
348
|
end
|
302
349
|
|
303
350
|
def test_stub_private_module_method
|
@@ -345,15 +392,13 @@ class TestMinitestStub < Minitest::Test
|
|
345
392
|
def test_stub_block_args
|
346
393
|
@assertion_count += 1
|
347
394
|
|
348
|
-
|
349
|
-
t = Time.now.to_i
|
395
|
+
t = Time.now.to_i
|
350
396
|
|
351
|
-
|
352
|
-
|
353
|
-
end
|
354
|
-
|
355
|
-
@tc.assert_operator Time.now.to_i, :>=, t
|
397
|
+
Time.stub :now, lambda { |n| n * 2 } do
|
398
|
+
@tc.assert_equal 42, Time.now(21)
|
356
399
|
end
|
400
|
+
|
401
|
+
@tc.assert_operator Time.now.to_i, :>=, t
|
357
402
|
end
|
358
403
|
|
359
404
|
def test_stub_callable
|
@@ -551,6 +551,12 @@ describe Minitest::Spec, :let do
|
|
551
551
|
|
552
552
|
_count.must_equal 2
|
553
553
|
end
|
554
|
+
|
555
|
+
it 'raises an error if the name begins with "test"' do
|
556
|
+
describe "let" do
|
557
|
+
proc { let(:test_value) { true } }.must_raise ArgumentError
|
558
|
+
end
|
559
|
+
end
|
554
560
|
end
|
555
561
|
|
556
562
|
describe Minitest::Spec, :subject do
|
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: 61
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 5
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 5.0.
|
9
|
+
- 5
|
10
|
+
version: 5.0.5
|
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-06-
|
39
|
+
date: 2013-06-21 00:00:00 Z
|
40
40
|
dependencies:
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rdoc
|
metadata.gz.sig
CHANGED
Binary file
|