assert 2.11.0 → 2.12.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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