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.
@@ -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 StubError, err_msg
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 StubError, "artiy mismatch" unless arity_matches?(args)
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 StubError, "artiy mismatch" unless arity_matches?(args)
63
+ raise StubArityError, "artiy mismatch" unless arity_matches?(args)
59
64
  @lookup[args] = block
60
65
  end
61
66
 
@@ -1,3 +1,3 @@
1
1
  module Assert
2
- VERSION = "2.12.0"
2
+ VERSION = "2.12.1"
3
3
  end
@@ -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(StubError){ @myobj.mymeth }
51
+ assert_raises(NotStubbedError){ @myobj.mymeth }
52
52
  Assert.stub(@myobj, :mymeth){ 'mymeth' }
53
53
  assert_equal 'mymeth', @myobj.mymeth
54
54
  end
@@ -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::StubError do
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::StubError){ @myobj.mymeth }
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::StubError){ @myobj.myval }
64
+ assert_raises(Assert::StubArityError){ @myobj.myval }
65
65
  assert_nothing_raised { @myobj.myval(1) }
66
- assert_raises(Assert::StubError){ @myobj.myval(1,2) }
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::StubError){ @myobj.myvalargs }
75
- assert_raises(Assert::StubError){ @myobj.myvalargs(1) }
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::StubError) do
81
+ assert_raises(Assert::StubArityError) do
82
82
  Assert::Stub.new(@myobj, :myval).with(){ 'myval' }
83
83
  end
84
- assert_raises(Assert::StubError) do
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::StubError) do
101
+ assert_raises(Assert::StubArityError) do
102
102
  Assert::Stub.new(@myobj, :myvalargs).with(){ 'myvalargs' }
103
103
  end
104
- assert_raises(Assert::StubError) do
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: 63
4
+ hash: 61
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
8
  - 12
9
- - 0
10
- version: 2.12.0
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-18 00:00:00 Z
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.25
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.