Skip to content
This repository was archived by the owner on Nov 30, 2024. It is now read-only.

Commit 17d6172

Browse files
committed
Proc#lambda? isn’t available on 1.8.7 for JRuby.
1 parent 95e85f3 commit 17d6172

File tree

2 files changed

+29
-13
lines changed

2 files changed

+29
-13
lines changed

lib/rspec/support.rb

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,15 @@ def self.method_handle_for(object, method_name)
5656
end
5757

5858
if RUBY_PLATFORM == 'java'
59-
def self.proc_to_lambda(block)
60-
return block if block.lambda?
61-
lambda(&block)
59+
if Proc.method_defined?(:lambda?)
60+
def self.proc_to_lambda(block)
61+
return block if block.lambda?
62+
lambda(&block)
63+
end
64+
else
65+
def self.proc_to_lambda(block)
66+
lambda(&block)
67+
end
6268
end
6369
elsif respond_to?(:define_singleton_method)
6470
def self.proc_to_lambda(block)

spec/rspec/support_spec.rb

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,18 +76,28 @@ def method_missing(name, *args, &block)
7676
end
7777
end
7878

79-
describe ".proc_to_lambda", :if => Proc.method_defined?(:lambda?) do
80-
it "converts a proc to a lambda" do
81-
p = Proc.new { 47 }
82-
expect(p).not_to be_lambda
83-
l = Support.proc_to_lambda(p)
84-
expect(l).to be_lambda
85-
expect(l.call).to eq(47)
79+
describe ".proc_to_lambda" do
80+
context "on an interpreter that provides Proc#lambda?", :if => Proc.method_defined?(:lambda?) do
81+
it "converts a proc to a lambda" do
82+
p = Proc.new { 47 }
83+
expect(p).not_to be_lambda
84+
l = Support.proc_to_lambda(p)
85+
expect(l).to be_lambda
86+
expect(l.call).to eq(47)
87+
end
88+
89+
it 'returns a lambda unchanged' do
90+
l = lambda { }
91+
expect(Support.proc_to_lambda(l)).to be(l)
92+
end
8693
end
8794

88-
it 'returns a lambda unchanged' do
89-
l = lambda { }
90-
expect(Support.proc_to_lambda(l)).to be(l)
95+
context "on an interpreter that does not provide Proc#lambda?", :unless => Proc.method_defined?(:lambda?) do
96+
it 'converts a proc to a lambda' do
97+
p = Proc.new { return 47 }
98+
l = Support.proc_to_lambda(p)
99+
expect(l.call).to eq(47)
100+
end
91101
end
92102
end
93103
end

0 commit comments

Comments
 (0)