dumb_delegator 1.0.0 → 1.1.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +8 -8
- data/lib/dumb_delegator/triple_equal_ext.rb +2 -0
- data/lib/dumb_delegator/version.rb +3 -1
- data/lib/dumb_delegator.rb +5 -3
- metadata +10 -59
- data/.gitignore +0 -23
- data/.travis.yml +0 -23
- data/Gemfile +0 -7
- data/dumb_delegator.gemspec +0 -31
- data/spec/dumb_delegator_spec.rb +0 -230
- data/spec/spec_helper.rb +0 -38
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aad024505a2fc9c628c3bee2cd7a7e5e769c1b18142a0e27da056106e53c86bb
|
4
|
+
data.tar.gz: d4110bc2ebe767e3a6a189345926a50c5d0b322a3ff9e0bcc3aef35b2d16a0ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 76f2e43119fbb66b69a580466241531ca39c54008b633b80eb8aab5ab2c7842508e85a9a8075d98b792bb46269f56cc37b093df4f414e1c010a5e74d59bd2904
|
7
|
+
data.tar.gz: 77d79fa8490019da9bef17e22f745a6535111c4f07331d2d77a8396be5371bfbe4afa6eb73689dddcdc9c42a725f9bf99e969dcac066921d437c06633f6ef3ea
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,10 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
|
|
5
5
|
|
6
6
|
## [Unreleased]
|
7
7
|
|
8
|
+
## [1.1.0] 2024-12-17
|
9
|
+
### Changed
|
10
|
+
- Use `__getobj__` to be compatible with the `Delegator` "interface." [@cervantn [14](https://github.com/stevenharman/dumb_delegator/pull/14)]
|
11
|
+
|
8
12
|
## [1.0.0] 2020-01-27
|
9
13
|
### Changed
|
10
14
|
- Require Ruby >= 2.4. We may still work with older Rubies, but no promises.
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# DumbDelegator
|
2
2
|
|
3
|
-
[](https://badge.fury.io/rb/dumb_delegator)
|
4
|
-
[](https://badge.fury.io/rb/dumb_delegator)
|
4
|
+
[](https://github.com/stevenharman/dumb_delegator/actions/workflows/ci.yml)
|
5
5
|
[](https://codeclimate.com/github/stevenharman/dumb_delegator/maintainability)
|
6
6
|
[](https://codeclimate.com/github/stevenharman/dumb_delegator/test_coverage)
|
7
7
|
|
@@ -43,19 +43,19 @@ d.is_a? MyAwesomeClass #=> true
|
|
43
43
|
|
44
44
|
## Installation
|
45
45
|
|
46
|
-
Add this line to your
|
46
|
+
Add this line to your Gemfile:
|
47
47
|
|
48
48
|
```ruby
|
49
49
|
gem "dumb_delegator"
|
50
50
|
```
|
51
51
|
|
52
|
-
And then
|
52
|
+
And then install:
|
53
53
|
|
54
54
|
```bash
|
55
55
|
$ bundle
|
56
56
|
```
|
57
57
|
|
58
|
-
Or install it yourself
|
58
|
+
Or install it yourself:
|
59
59
|
|
60
60
|
```bash
|
61
61
|
$ gem install dumb_delegator
|
@@ -68,9 +68,9 @@ This project adheres to [Semantic Versioning][semver].
|
|
68
68
|
#### Version `0.8.x`
|
69
69
|
|
70
70
|
The `0.8.0` release was downloaded 1.2MM times before the `1.0.0` work began.
|
71
|
-
Which is great
|
71
|
+
Which is great! 🎉
|
72
72
|
But, we wanted to clean up some cruft, fix a few small things, and improve ergonomics.
|
73
|
-
And do all of that
|
73
|
+
And we wanted to do all of that while, hopefully, not breaking existing usage.
|
74
74
|
|
75
75
|
To that end, `1.0.0` dropped support for all [EoL'd Rubies][ruby-releases] and only officially supported Ruby `2.4` - `2.7` when it was released.
|
76
76
|
However, most older Rubies, _should_ still work.
|
@@ -81,7 +81,7 @@ If you're on an EoL'd Ruby, please try the `0.8.x` versions of this gem.
|
|
81
81
|
## Usage
|
82
82
|
|
83
83
|
`DumbDelegator`'s API and usage patters were inspired by Ruby stdlib's `SimpleDelegator`.
|
84
|
-
|
84
|
+
So the usage and ergonomics are quite similar.
|
85
85
|
|
86
86
|
```ruby
|
87
87
|
require "dumb_delegator"
|
data/lib/dumb_delegator.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "dumb_delegator/triple_equal_ext"
|
2
4
|
require "dumb_delegator/version"
|
3
5
|
|
@@ -59,8 +61,8 @@ class DumbDelegator < ::BasicObject
|
|
59
61
|
end
|
60
62
|
|
61
63
|
def method_missing(method, *args, &block)
|
62
|
-
if
|
63
|
-
|
64
|
+
if __getobj__.respond_to?(method)
|
65
|
+
__getobj__.__send__(method, *args, &block)
|
64
66
|
else
|
65
67
|
super
|
66
68
|
end
|
@@ -84,7 +86,7 @@ class DumbDelegator < ::BasicObject
|
|
84
86
|
def marshal_dump
|
85
87
|
[
|
86
88
|
:__v1__,
|
87
|
-
__getobj__
|
89
|
+
__getobj__
|
88
90
|
]
|
89
91
|
end
|
90
92
|
|
metadata
CHANGED
@@ -1,58 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dumb_delegator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Lindeman
|
8
8
|
- Steven Harman
|
9
|
-
autorequire:
|
10
|
-
bindir:
|
9
|
+
autorequire:
|
10
|
+
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
13
|
-
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: pry
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
requirements:
|
18
|
-
- - ">="
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: '0'
|
21
|
-
type: :development
|
22
|
-
prerelease: false
|
23
|
-
version_requirements: !ruby/object:Gem::Requirement
|
24
|
-
requirements:
|
25
|
-
- - ">="
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
version: '0'
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: rake
|
30
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
-
requirements:
|
32
|
-
- - "~>"
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: '13.0'
|
35
|
-
type: :development
|
36
|
-
prerelease: false
|
37
|
-
version_requirements: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - "~>"
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: '13.0'
|
42
|
-
- !ruby/object:Gem::Dependency
|
43
|
-
name: rspec
|
44
|
-
requirement: !ruby/object:Gem::Requirement
|
45
|
-
requirements:
|
46
|
-
- - "~>"
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: '3.9'
|
49
|
-
type: :development
|
50
|
-
prerelease: false
|
51
|
-
version_requirements: !ruby/object:Gem::Requirement
|
52
|
-
requirements:
|
53
|
-
- - "~>"
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version: '3.9'
|
12
|
+
date: 2024-12-17 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
56
14
|
description: |
|
57
15
|
Delegator and SimpleDelegator in Ruby's stdlib are useful, but they pull in most of Kernel.
|
58
16
|
This is not appropriate for many uses; for instance, delegation to Rails Models.
|
@@ -64,28 +22,23 @@ executables: []
|
|
64
22
|
extensions: []
|
65
23
|
extra_rdoc_files: []
|
66
24
|
files:
|
67
|
-
- ".gitignore"
|
68
25
|
- ".rspec"
|
69
|
-
- ".travis.yml"
|
70
26
|
- CHANGELOG.md
|
71
|
-
- Gemfile
|
72
27
|
- LICENSE
|
73
28
|
- README.md
|
74
29
|
- Rakefile
|
75
|
-
- dumb_delegator.gemspec
|
76
30
|
- lib/dumb_delegator.rb
|
77
31
|
- lib/dumb_delegator/triple_equal_ext.rb
|
78
32
|
- lib/dumb_delegator/version.rb
|
79
|
-
- spec/dumb_delegator_spec.rb
|
80
|
-
- spec/spec_helper.rb
|
81
33
|
homepage: https://github.com/stevenharman/dumb_delegator
|
82
34
|
licenses:
|
83
35
|
- MIT
|
84
36
|
metadata:
|
85
37
|
changelog_uri: https://github.com/stevenharman/dumb_delegator/blob/master/CHANGELOG.md
|
86
38
|
documentation_uri: https://rubydoc.info/gems/dumb_delegator
|
39
|
+
homepage_uri: https://github.com/stevenharman/dumb_delegator
|
87
40
|
source_code_uri: https://github.com/stevenharman/dumb_delegator
|
88
|
-
post_install_message:
|
41
|
+
post_install_message:
|
89
42
|
rdoc_options: []
|
90
43
|
require_paths:
|
91
44
|
- lib
|
@@ -100,10 +53,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
53
|
- !ruby/object:Gem::Version
|
101
54
|
version: '0'
|
102
55
|
requirements: []
|
103
|
-
rubygems_version: 3.
|
104
|
-
signing_key:
|
56
|
+
rubygems_version: 3.5.23
|
57
|
+
signing_key:
|
105
58
|
specification_version: 4
|
106
59
|
summary: Delegator class that delegates ALL the things
|
107
|
-
test_files:
|
108
|
-
- spec/dumb_delegator_spec.rb
|
109
|
-
- spec/spec_helper.rb
|
60
|
+
test_files: []
|
data/.gitignore
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
# Ignore all logfiles and tempfiles
|
2
|
-
/tmp/
|
3
|
-
/tags
|
4
|
-
|
5
|
-
# Environment normalisation
|
6
|
-
/.env
|
7
|
-
/.rspec-local
|
8
|
-
/.yardoc
|
9
|
-
/lib/bundler/man/
|
10
|
-
|
11
|
-
# Gem packaging stuff
|
12
|
-
/*.gem
|
13
|
-
/pkg/
|
14
|
-
|
15
|
-
# Dependencies and such
|
16
|
-
/.bundle
|
17
|
-
/.ruby-version
|
18
|
-
/Gemfile.lock
|
19
|
-
|
20
|
-
# Spec and coverage housekeeping
|
21
|
-
/coverage/
|
22
|
-
/spec/rspec-status.txt
|
23
|
-
/spec/reports
|
data/.travis.yml
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
dist: xenial
|
3
|
-
env:
|
4
|
-
global:
|
5
|
-
- CC_TEST_REPORTER_ID=de7062a4090ce5638b515a2cf9f2ab619de3e3f4ff439dc6cdad025c7a8d6b76
|
6
|
-
rvm:
|
7
|
-
- 2.4
|
8
|
-
- 2.5
|
9
|
-
- 2.6
|
10
|
-
- 2.7
|
11
|
-
- jruby
|
12
|
-
cache: bundler
|
13
|
-
before_install:
|
14
|
-
- gem update --system --conservative
|
15
|
-
- gem update bundler --conservative
|
16
|
-
before_script:
|
17
|
-
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
18
|
-
- chmod +x ./cc-test-reporter
|
19
|
-
- ./cc-test-reporter before-build
|
20
|
-
script:
|
21
|
-
- bundle exec rake spec
|
22
|
-
after_script:
|
23
|
-
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|
data/Gemfile
DELETED
data/dumb_delegator.gemspec
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
require File.expand_path("../lib/dumb_delegator/version", __FILE__)
|
2
|
-
|
3
|
-
Gem::Specification.new do |gem|
|
4
|
-
gem.name = "dumb_delegator"
|
5
|
-
gem.version = DumbDelegator::VERSION
|
6
|
-
gem.required_ruby_version = ">= 2.4.0"
|
7
|
-
gem.authors = ["Andy Lindeman", "Steven Harman"]
|
8
|
-
gem.email = ["alindeman@gmail.com", "steven@harmanly.com"]
|
9
|
-
gem.licenses = ["MIT"]
|
10
|
-
gem.summary = "Delegator class that delegates ALL the things"
|
11
|
-
gem.description = <<~EOD
|
12
|
-
Delegator and SimpleDelegator in Ruby's stdlib are useful, but they pull in most of Kernel.
|
13
|
-
This is not appropriate for many uses; for instance, delegation to Rails Models.
|
14
|
-
DumbDelegator, on the other hand, delegates nearly everything to the wrapped object.
|
15
|
-
EOD
|
16
|
-
gem.homepage = "https://github.com/stevenharman/dumb_delegator"
|
17
|
-
|
18
|
-
gem.metadata = {
|
19
|
-
"changelog_uri" => "https://github.com/stevenharman/dumb_delegator/blob/master/CHANGELOG.md",
|
20
|
-
"documentation_uri" => "https://rubydoc.info/gems/dumb_delegator",
|
21
|
-
"source_code_uri" => "https://github.com/stevenharman/dumb_delegator",
|
22
|
-
}
|
23
|
-
|
24
|
-
gem.files = `git ls-files`.split($\)
|
25
|
-
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
26
|
-
gem.require_paths = ["lib"]
|
27
|
-
|
28
|
-
gem.add_development_dependency "pry"
|
29
|
-
gem.add_development_dependency "rake", "~> 13.0"
|
30
|
-
gem.add_development_dependency "rspec", "~> 3.9"
|
31
|
-
end
|
data/spec/dumb_delegator_spec.rb
DELETED
@@ -1,230 +0,0 @@
|
|
1
|
-
RSpec.describe DumbDelegator do
|
2
|
-
subject(:dummy) { Wrapper.new(target) }
|
3
|
-
let(:target) { Target.new }
|
4
|
-
|
5
|
-
class Wrapper < DumbDelegator
|
6
|
-
def wrapper_method
|
7
|
-
"Method only on wrapper."
|
8
|
-
end
|
9
|
-
|
10
|
-
def common_method
|
11
|
-
["Method on wrapper.", super].join(" ")
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
class Target
|
16
|
-
def common_method
|
17
|
-
"Method on target."
|
18
|
-
end
|
19
|
-
|
20
|
-
def target_method
|
21
|
-
"Method only on target."
|
22
|
-
end
|
23
|
-
|
24
|
-
def query(*args)
|
25
|
-
"queried with #{args}"
|
26
|
-
end
|
27
|
-
|
28
|
-
def with_block(&block)
|
29
|
-
block.call
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
it "delegates to the target object" do
|
34
|
-
expect(dummy.target_method).to eq("Method only on target.")
|
35
|
-
end
|
36
|
-
|
37
|
-
it "delegates to the target object with arguments" do
|
38
|
-
result = dummy.query("some_key", 42)
|
39
|
-
|
40
|
-
expect(result).to eq(%(queried with ["some_key", 42]))
|
41
|
-
end
|
42
|
-
|
43
|
-
it "delegates to the target object with a block" do
|
44
|
-
result = dummy.with_block { "block called!" }
|
45
|
-
|
46
|
-
expect(result).to eq("block called!")
|
47
|
-
end
|
48
|
-
|
49
|
-
it "errors if the method is not defined on the wrapper nor the target" do
|
50
|
-
expect {
|
51
|
-
dummy.no_such_method
|
52
|
-
}.to raise_error(NoMethodError)
|
53
|
-
end
|
54
|
-
|
55
|
-
it "responds to methods defined by child classes" do
|
56
|
-
expect(dummy.wrapper_method).to eq("Method only on wrapper.")
|
57
|
-
end
|
58
|
-
|
59
|
-
it "responds to methods defined by child classes, and can super up to target" do
|
60
|
-
expect(dummy.common_method).to eq("Method on wrapper. Method on target.")
|
61
|
-
end
|
62
|
-
|
63
|
-
it "delegates methods defined on Object" do
|
64
|
-
expect(dummy.class).to eq(Target)
|
65
|
-
end
|
66
|
-
|
67
|
-
it "delegates methods defined on Kernel" do
|
68
|
-
expect(target).to receive(:nil?)
|
69
|
-
dummy.nil?
|
70
|
-
end
|
71
|
-
|
72
|
-
it "delegates bang (!) operator" do
|
73
|
-
allow(target).to receive(:!) { "bang!" }
|
74
|
-
expect(!dummy).to eq("bang!")
|
75
|
-
end
|
76
|
-
|
77
|
-
it "delegates object inequivalence" do
|
78
|
-
allow(target).to receive(:!=).and_call_original
|
79
|
-
|
80
|
-
expect(dummy != target).to be false
|
81
|
-
end
|
82
|
-
|
83
|
-
it "delegates object equivalence" do
|
84
|
-
aggregate_failures do
|
85
|
-
expect(dummy).to eql(target)
|
86
|
-
expect(dummy == target).to be true
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
it "delegates #===" do
|
91
|
-
expect(dummy === target).to be true
|
92
|
-
end
|
93
|
-
|
94
|
-
it "delegates class checks" do
|
95
|
-
aggregate_failures do
|
96
|
-
expect(dummy.is_a?(Target)).to be(true)
|
97
|
-
expect(dummy.kind_of?(Target)).to be(true) # rubocop:disable Style/ClassCheck
|
98
|
-
expect(dummy.instance_of?(Target)).to be(true)
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
it "does not delegate ::=== to the target's class" do
|
103
|
-
aggregate_failures do
|
104
|
-
expect(Target === dummy).to be false
|
105
|
-
expect(DumbDelegator === dummy).to be true
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
context "with a Module/Class's ::=== overridden via extension" do
|
110
|
-
let(:target) { TargetWithTripleEqualExt.new }
|
111
|
-
|
112
|
-
class TargetWithTripleEqualExt
|
113
|
-
extend DumbDelegator::TripleEqualExt
|
114
|
-
end
|
115
|
-
|
116
|
-
it "delegates ::=== to the target's class" do
|
117
|
-
aggregate_failures do
|
118
|
-
expect(TargetWithTripleEqualExt === dummy).to be true
|
119
|
-
expect(DumbDelegator === dummy).to be true
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
it "delegates instance_eval" do
|
125
|
-
expect(target).to receive(:instance_eval)
|
126
|
-
dummy.instance_eval { true }
|
127
|
-
end
|
128
|
-
|
129
|
-
it "delegates instance_exec" do
|
130
|
-
expect(target).to receive(:instance_exec)
|
131
|
-
dummy.instance_exec { true }
|
132
|
-
end
|
133
|
-
|
134
|
-
describe "#dup" do
|
135
|
-
it "returns a shallow of itself, the delegator (not the underlying object)", objectspace: true do
|
136
|
-
dupped = dummy.dup
|
137
|
-
|
138
|
-
expect(ObjectSpace.each_object(DumbDelegator).map(&:__id__)).to include dupped.__id__
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
|
-
describe "#clone" do
|
143
|
-
it "returns a shallow of itself, the delegator (not the underlying object)", objectspace: true do
|
144
|
-
cloned = dummy.clone
|
145
|
-
|
146
|
-
expect(ObjectSpace.each_object(DumbDelegator).map(&:__id__)).to include cloned.__id__
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
describe "marshaling" do
|
151
|
-
let(:target) { Object.new }
|
152
|
-
|
153
|
-
it "marshals and unmarshals itself, the delegator (not the underlying object)", objectspace: true do
|
154
|
-
marshaled = Marshal.dump(dummy)
|
155
|
-
unmarshaled = Marshal.load(marshaled)
|
156
|
-
|
157
|
-
expect(ObjectSpace.each_object(DumbDelegator).map(&:__id__)).to include unmarshaled.__id__
|
158
|
-
end
|
159
|
-
end
|
160
|
-
|
161
|
-
describe "#respond_to?" do
|
162
|
-
[:equal?, :__id__, :__send__, :dup, :clone, :__getobj__, :__setobj__, :marshal_dump, :marshal_load, :respond_to?].each do |method|
|
163
|
-
it "responds to #{method}" do
|
164
|
-
expect(dummy.respond_to?(method)).to be true
|
165
|
-
end
|
166
|
-
end
|
167
|
-
|
168
|
-
context "subclasses of DumbDelegator" do
|
169
|
-
it "respond to methods defined on the subclass" do
|
170
|
-
expect(dummy).to respond_to(:target_method)
|
171
|
-
end
|
172
|
-
end
|
173
|
-
end
|
174
|
-
|
175
|
-
describe "#__getobj__" do
|
176
|
-
it "returns the target object" do
|
177
|
-
expect(dummy.__getobj__).to equal(target)
|
178
|
-
end
|
179
|
-
end
|
180
|
-
|
181
|
-
describe "#__setobj__" do
|
182
|
-
it "resets the target object to a different object" do
|
183
|
-
new_target = Target.new.tap do |nt|
|
184
|
-
def nt.a_new_thing
|
185
|
-
true
|
186
|
-
end
|
187
|
-
end
|
188
|
-
|
189
|
-
dummy.__setobj__(new_target)
|
190
|
-
expect(dummy.a_new_thing).to be true
|
191
|
-
end
|
192
|
-
|
193
|
-
it "cannot delegate to itself" do
|
194
|
-
expect {
|
195
|
-
dummy.__setobj__(dummy)
|
196
|
-
dummy.common_method
|
197
|
-
}.to raise_error(ArgumentError, "Delegation to self is not allowed.")
|
198
|
-
end
|
199
|
-
end
|
200
|
-
|
201
|
-
describe "introspection capabilities" do
|
202
|
-
it "provides a human-friendly representation of the delegator and wrapped object" do
|
203
|
-
expect(dummy.inspect).to match(/#<Wrapper:\w+ obj: .+Target.+>/)
|
204
|
-
end
|
205
|
-
|
206
|
-
it "reports methods defined on the target" do
|
207
|
-
expect(dummy.methods).to include(:target_method, :common_method)
|
208
|
-
end
|
209
|
-
|
210
|
-
it "reports methods defined on the wrapper" do
|
211
|
-
expect(dummy.methods).to include(:wrapper_method, :common_method)
|
212
|
-
end
|
213
|
-
|
214
|
-
it "looks up a named method on the target" do
|
215
|
-
method = dummy.method(:target_method)
|
216
|
-
aggregate_failures do
|
217
|
-
expect(method).not_to be_nil
|
218
|
-
expect(method.receiver).to eq(target)
|
219
|
-
end
|
220
|
-
end
|
221
|
-
|
222
|
-
it "looks up a named method on the wrapper" do
|
223
|
-
method = dummy.method(:wrapper_method)
|
224
|
-
aggregate_failures do
|
225
|
-
expect(method).not_to be_nil
|
226
|
-
expect(method.receiver).to equal(dummy)
|
227
|
-
end
|
228
|
-
end
|
229
|
-
end
|
230
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
if ENV["CC_TEST_REPORTER_ID"] || ENV["COVERAGE"]
|
2
|
-
require "simplecov"
|
3
|
-
SimpleCov.start
|
4
|
-
end
|
5
|
-
|
6
|
-
require "pry"
|
7
|
-
require File.expand_path("../lib/dumb_delegator", File.dirname(__FILE__))
|
8
|
-
|
9
|
-
RSpec.configure do |config|
|
10
|
-
config.expect_with :rspec do |expectations|
|
11
|
-
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
12
|
-
end
|
13
|
-
|
14
|
-
config.mock_with :rspec do |mocks|
|
15
|
-
mocks.verify_partial_doubles = true
|
16
|
-
end
|
17
|
-
|
18
|
-
# This option will default to `:apply_to_host_groups` in RSpec 4 (and will
|
19
|
-
# have no way to turn it off -- the option exists only for backwards
|
20
|
-
# compatibility in RSpec 3). It causes shared context metadata to be
|
21
|
-
# inherited by the metadata hash of host groups and examples, rather than
|
22
|
-
# triggering implicit auto-inclusion in groups with matching metadata.
|
23
|
-
config.shared_context_metadata_behavior = :apply_to_host_groups
|
24
|
-
|
25
|
-
config.filter_run_when_matching :focus
|
26
|
-
config.example_status_persistence_file_path = "spec/rspec-status.txt"
|
27
|
-
config.disable_monkey_patching!
|
28
|
-
config.warnings = true
|
29
|
-
|
30
|
-
if config.files_to_run.one?
|
31
|
-
# Use the documentation formatter for detailed output,
|
32
|
-
# unless a formatter has already been configured
|
33
|
-
# (e.g. via a command-line flag).
|
34
|
-
config.default_formatter = "doc"
|
35
|
-
end
|
36
|
-
config.order = :random
|
37
|
-
Kernel.srand config.seed
|
38
|
-
end
|