Skip to content

Commit

Permalink
Use __send__ instead of send
Browse files Browse the repository at this point in the history
  • Loading branch information
richardplatel committed Jul 27, 2023
1 parent 8158970 commit e4e4591
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 2 deletions.
4 changes: 2 additions & 2 deletions lib/rspec/core/output_wrapper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ def respond_to?(name, priv=false)
end

def method_missing(name, *args, &block)
output.send(name, *args, &block)
output.__send__(name, *args, &block)
end

# Redirect calls for IO interface methods
IO.instance_methods(false).each do |method|
define_method(method) do |*args, &block|
output.send(method, *args, &block)
output.__send__(method, *args, &block)
end
end
end
Expand Down
19 changes: 19 additions & 0 deletions spec/rspec/core/output_wrapper_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
require 'socket'

module RSpec::Core
RSpec.describe OutputWrapper do
let(:output) { StringIO.new }
Expand All @@ -9,6 +11,23 @@ module RSpec::Core
expect(output.string).to eq("message\nanother message").and eq(wrapper.string)
end

describe 'output method proxy' do
let(:output) {UNIXSocket.pair.first}
let(:wrapper) {OutputWrapper.new(output)}

it "proxies IO methods to output" do
expect(output).to receive(:puts).with("message")
wrapper.puts('message')
end

it "proxies unknown methods to output" do
expect(output).to receive(:addr).with(no_args)
wrapper.addr
end

end


describe '#output=' do
let(:another_output) { StringIO.new }

Expand Down

0 comments on commit e4e4591

Please sign in to comment.