assert 2.12.0 → 2.12.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/lib/assert/stub.rb +8 -3
- data/lib/assert/version.rb +1 -1
- data/test/unit/assert_tests.rb +1 -1
- data/test/unit/stub_tests.rb +42 -10
- metadata +6 -6
data/lib/assert/stub.rb
CHANGED
@@ -19,6 +19,8 @@ module Assert
|
|
19
19
|
end
|
20
20
|
|
21
21
|
StubError = Class.new(ArgumentError)
|
22
|
+
NotStubbedError = Class.new(StubError)
|
23
|
+
StubArityError = Class.new(StubError)
|
22
24
|
|
23
25
|
class Stub
|
24
26
|
|
@@ -44,18 +46,21 @@ module Assert
|
|
44
46
|
inspect_lookup_stubs.tap do |stubs|
|
45
47
|
err_msg += "\nStubs:\n#{stubs}" if !stubs.empty?
|
46
48
|
end
|
47
|
-
raise
|
49
|
+
raise NotStubbedError, err_msg
|
48
50
|
end
|
49
51
|
@lookup = Hash.new{ |hash, key| self.do }
|
50
52
|
end
|
51
53
|
|
52
54
|
def call(*args, &block)
|
53
|
-
raise
|
55
|
+
raise StubArityError, "artiy mismatch" unless arity_matches?(args)
|
56
|
+
@lookup[args].call(*args, &block)
|
57
|
+
rescue NotStubbedError => exception
|
58
|
+
@lookup.rehash
|
54
59
|
@lookup[args].call(*args, &block)
|
55
60
|
end
|
56
61
|
|
57
62
|
def with(*args, &block)
|
58
|
-
raise
|
63
|
+
raise StubArityError, "artiy mismatch" unless arity_matches?(args)
|
59
64
|
@lookup[args] = block
|
60
65
|
end
|
61
66
|
|
data/lib/assert/version.rb
CHANGED
data/test/unit/assert_tests.rb
CHANGED
@@ -48,7 +48,7 @@ module Assert
|
|
48
48
|
|
49
49
|
should "set the stub's do block if given a block" do
|
50
50
|
Assert.stub(@myobj, :mymeth)
|
51
|
-
assert_raises(
|
51
|
+
assert_raises(NotStubbedError){ @myobj.mymeth }
|
52
52
|
Assert.stub(@myobj, :mymeth){ 'mymeth' }
|
53
53
|
assert_equal 'mymeth', @myobj.mymeth
|
54
54
|
end
|
data/test/unit/stub_tests.rb
CHANGED
@@ -35,7 +35,7 @@ class Assert::Stub
|
|
35
35
|
end
|
36
36
|
|
37
37
|
should "complain when called if no do block was given" do
|
38
|
-
assert_raises Assert::
|
38
|
+
assert_raises Assert::NotStubbedError do
|
39
39
|
@myobj.mymeth
|
40
40
|
end
|
41
41
|
|
@@ -56,14 +56,14 @@ class Assert::Stub
|
|
56
56
|
end
|
57
57
|
|
58
58
|
should "complain if stubbed and called with no `do` proc given" do
|
59
|
-
assert_raises(Assert::
|
59
|
+
assert_raises(Assert::NotStubbedError){ @myobj.mymeth }
|
60
60
|
end
|
61
61
|
|
62
62
|
should "complain if stubbed and called with mismatched arity" do
|
63
63
|
Assert::Stub.new(@myobj, :myval){ 'myval' }
|
64
|
-
assert_raises(Assert::
|
64
|
+
assert_raises(Assert::StubArityError){ @myobj.myval }
|
65
65
|
assert_nothing_raised { @myobj.myval(1) }
|
66
|
-
assert_raises(Assert::
|
66
|
+
assert_raises(Assert::StubArityError){ @myobj.myval(1,2) }
|
67
67
|
|
68
68
|
Assert::Stub.new(@myobj, :myargs){ 'myargs' }
|
69
69
|
assert_nothing_raised { @myobj.myargs }
|
@@ -71,17 +71,17 @@ class Assert::Stub
|
|
71
71
|
assert_nothing_raised { @myobj.myargs(1,2) }
|
72
72
|
|
73
73
|
Assert::Stub.new(@myobj, :myvalargs){ 'myvalargs' }
|
74
|
-
assert_raises(Assert::
|
75
|
-
assert_raises(Assert::
|
74
|
+
assert_raises(Assert::StubArityError){ @myobj.myvalargs }
|
75
|
+
assert_raises(Assert::StubArityError){ @myobj.myvalargs(1) }
|
76
76
|
assert_nothing_raised { @myobj.myvalargs(1,2) }
|
77
77
|
assert_nothing_raised { @myobj.myvalargs(1,2,3) }
|
78
78
|
end
|
79
79
|
|
80
80
|
should "complain if stubbed with mismatched arity" do
|
81
|
-
assert_raises(Assert::
|
81
|
+
assert_raises(Assert::StubArityError) do
|
82
82
|
Assert::Stub.new(@myobj, :myval).with(){ 'myval' }
|
83
83
|
end
|
84
|
-
assert_raises(Assert::
|
84
|
+
assert_raises(Assert::StubArityError) do
|
85
85
|
Assert::Stub.new(@myobj, :myval).with(1,2){ 'myval' }
|
86
86
|
end
|
87
87
|
assert_nothing_raised do
|
@@ -98,10 +98,10 @@ class Assert::Stub
|
|
98
98
|
Assert::Stub.new(@myobj, :myargs).with(1){ 'myargs' }
|
99
99
|
end
|
100
100
|
|
101
|
-
assert_raises(Assert::
|
101
|
+
assert_raises(Assert::StubArityError) do
|
102
102
|
Assert::Stub.new(@myobj, :myvalargs).with(){ 'myvalargs' }
|
103
103
|
end
|
104
|
-
assert_raises(Assert::
|
104
|
+
assert_raises(Assert::StubArityError) do
|
105
105
|
Assert::Stub.new(@myobj, :myvalargs).with(1){ 'myvalargs' }
|
106
106
|
end
|
107
107
|
assert_nothing_raised do
|
@@ -191,6 +191,24 @@ class Assert::Stub
|
|
191
191
|
|
192
192
|
end
|
193
193
|
|
194
|
+
class MutatingArgsStubTests < UnitTests
|
195
|
+
desc "with args that are mutated after they've been used to stub"
|
196
|
+
setup do
|
197
|
+
@arg = ChangeHashObject.new
|
198
|
+
|
199
|
+
@stub = Assert::Stub.new(@myobj, :myval)
|
200
|
+
@stub.with(@arg){ true }
|
201
|
+
|
202
|
+
@arg.change!
|
203
|
+
end
|
204
|
+
subject{ @stub }
|
205
|
+
|
206
|
+
should "not raise a stub error when called" do
|
207
|
+
assert_nothing_raised{ @stub.call(@arg) }
|
208
|
+
end
|
209
|
+
|
210
|
+
end
|
211
|
+
|
194
212
|
class NullStubTests < UnitTests
|
195
213
|
desc "NullStub"
|
196
214
|
setup do
|
@@ -202,4 +220,18 @@ class Assert::Stub
|
|
202
220
|
|
203
221
|
end
|
204
222
|
|
223
|
+
class ChangeHashObject
|
224
|
+
def initialize
|
225
|
+
@value = nil
|
226
|
+
end
|
227
|
+
|
228
|
+
def hash
|
229
|
+
@value.hash
|
230
|
+
end
|
231
|
+
|
232
|
+
def change!
|
233
|
+
@value = 1
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
205
237
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: assert
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 61
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 12
|
9
|
-
-
|
10
|
-
version: 2.12.
|
9
|
+
- 1
|
10
|
+
version: 2.12.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kelly Redding
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2014-06-
|
19
|
+
date: 2014-06-27 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
requirement: &id001 !ruby/object:Gem::Requirement
|
@@ -29,9 +29,9 @@ dependencies:
|
|
29
29
|
- 1
|
30
30
|
- 3
|
31
31
|
version: "1.3"
|
32
|
+
version_requirements: *id001
|
32
33
|
type: :runtime
|
33
34
|
name: ansi
|
34
|
-
version_requirements: *id001
|
35
35
|
prerelease: false
|
36
36
|
description: Test::Unit style testing framework, just better than Test::Unit.
|
37
37
|
email:
|
@@ -144,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
144
144
|
requirements: []
|
145
145
|
|
146
146
|
rubyforge_project:
|
147
|
-
rubygems_version: 1.8.
|
147
|
+
rubygems_version: 1.8.29
|
148
148
|
signing_key:
|
149
149
|
specification_version: 3
|
150
150
|
summary: Test::Unit style testing framework, just better than Test::Unit.
|