assert 2.11.0 → 2.12.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.
@@ -17,28 +17,9 @@ module Assert
17
17
  def self.suite; self.config.suite; end
18
18
  def self.runner; self.config.runner; end
19
19
 
20
- def self.stubs
21
- @stubs ||= {}
22
- end
23
-
24
- def self.stub(*args, &block)
25
- (self.stubs[Assert::Stub.key(*args)] ||= Assert::Stub.new(*args)).tap do |s|
26
- s.do = block
27
- end
28
- end
29
-
30
- def self.unstub(*args)
31
- (self.stubs.delete(Assert::Stub.key(*args)) || Assert::Stub::NullStub.new).teardown
32
- end
33
-
34
- def self.unstub!
35
- self.stubs.keys.each{ |key| self.stubs.delete(key).teardown }
36
- end
37
-
20
+ # unstub all stubs automatically (see stub.rb)
38
21
  class Context
39
-
40
- teardown{ Assert.unstub! } # unstub all stubs automatically
41
-
22
+ teardown{ Assert.unstub! }
42
23
  end
43
24
 
44
25
  end
@@ -1,5 +1,23 @@
1
1
  module Assert
2
2
 
3
+ def self.stubs
4
+ @stubs ||= {}
5
+ end
6
+
7
+ def self.stub(*args, &block)
8
+ (self.stubs[Assert::Stub.key(*args)] ||= Assert::Stub.new(*args)).tap do |s|
9
+ s.do = block
10
+ end
11
+ end
12
+
13
+ def self.unstub(*args)
14
+ (self.stubs.delete(Assert::Stub.key(*args)) || Assert::Stub::NullStub.new).teardown
15
+ end
16
+
17
+ def self.unstub!
18
+ self.stubs.keys.each{ |key| self.stubs.delete(key).teardown }
19
+ end
20
+
3
21
  StubError = Class.new(ArgumentError)
4
22
 
5
23
  class Stub
@@ -58,9 +76,11 @@ module Assert
58
76
  raise StubError, "#{object.inspect} does not respond to `#{@method_name}`"
59
77
  end
60
78
  if !object.methods.map(&:to_s).include?(@method_name)
61
- @metaclass.send(:define_method, @method_name) do |*args, &block|
62
- super(*args, &block)
63
- end
79
+ @metaclass.class_eval <<-method
80
+ def #{@method_name}(*args, &block)
81
+ super(*args, &block)
82
+ end
83
+ method
64
84
  end
65
85
 
66
86
  if !object.respond_to?(@name) # already stubbed
@@ -1,3 +1,3 @@
1
1
  module Assert
2
- VERSION = "2.11.0"
2
+ VERSION = "2.12.0"
3
3
  end
@@ -159,16 +159,26 @@ class Assert::Stub
159
159
  assert_equal 'true', blkcalled
160
160
  end
161
161
 
162
- should "stub methods even if they are from a super class" do
163
- mysubclass = Class.new(@myclass)
164
- mysubobj = mysubclass.new
165
-
166
- assert_equal 1, mysubobj.myval(1)
167
- stub = Assert::Stub.new(mysubobj, :myval){ |val| val.to_s }
168
- assert_equal '1', mysubobj.myval(1)
169
- assert_equal '2', mysubobj.myval(2)
170
- stub.with(2){ 'two' }
171
- assert_equal 'two', mysubobj.myval(2)
162
+ should "stub methods even if they are not local to the object" do
163
+ mydelegatorclass = Class.new do
164
+ def initialize(delegateclass)
165
+ @delegate = delegateclass.new
166
+ end
167
+ def respond_to?(meth)
168
+ @delegate.respond_to?(meth) || super
169
+ end
170
+ def method_missing(meth, *args, &block)
171
+ respond_to?(meth) ? @delegate.send(meth, *args, &block) : super
172
+ end
173
+ end
174
+ mydelegator = mydelegatorclass.new(@myclass)
175
+
176
+ assert_equal [1,2,[3]], mydelegator.myvalargs(1,2,3)
177
+ stub = Assert::Stub.new(mydelegator, :myvalargs){ |*args| args.inspect }
178
+ assert_equal '[1, 2, 3]', mydelegator.myvalargs(1,2,3)
179
+ assert_equal '[4, 5, 6]', mydelegator.myvalargs(4,5,6)
180
+ stub.with(4,5,6){ 'four-five-six' }
181
+ assert_equal 'four-five-six', mydelegator.myvalargs(4,5,6)
172
182
  end
173
183
 
174
184
  should "be removable" do
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: 35
4
+ hash: 63
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
- - 11
8
+ - 12
9
9
  - 0
10
- version: 2.11.0
10
+ version: 2.12.0
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-17 00:00:00 Z
19
+ date: 2014-06-18 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  requirement: &id001 !ruby/object:Gem::Requirement