Skip to content

Commit

Permalink
Added specs for Proc#ruby2_keywords
Browse files Browse the repository at this point in the history
  • Loading branch information
andrykonchin committed Jan 3, 2021
1 parent 8ca99c7 commit c614222
Showing 1 changed file with 64 additions and 0 deletions.
64 changes: 64 additions & 0 deletions core/proc/ruby2_keywords_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
require_relative '../../spec_helper'

ruby_version_is "2.7" do
describe "Proc#ruby2_keywords" do
it "marks the final hash argument as keyword hash" do
f = -> *a { a.last }
f.ruby2_keywords

last = f.call(1, 2, a: "a")
Hash.ruby2_keywords_hash?(last).should == true
end

ruby_version_is "2.7" ... "3.0" do
it "suppresses deprecation warning when calls a method" do
obj = Object.new
def obj.foo(*a, **b) end

f = -> *a { obj.foo(*a) }

-> { f.call(1, 2, {a: "a"}) }.should complain(/Using the last argument as keyword parameters is deprecated/)
f.ruby2_keywords
-> { f.call(1, 2, {a: "a"}) }.should_not complain
end

it "suppresses deprecation warning when calls another proc" do
g = -> *a, **b { }
f = -> *a { g.call(*a) }

-> { f.call(1, 2, {a: "a"}) }.should complain(/Using the last argument as keyword parameters is deprecated/)
f.ruby2_keywords
-> { f.call(1, 2, {a: "a"}) }.should_not complain
end
end

it "returns self" do
f = -> *a { }
f.ruby2_keywords.should equal f
end

it "prints warning when a proc does not accept argument splat" do
f = -> a, b, c { }

-> {
f.ruby2_keywords
}.should complain(/Skipping set of ruby2_keywords flag for/)
end

it "prints warning when a proc accepts keywords" do
f = -> a:, b: { }

-> {
f.ruby2_keywords
}.should complain(/Skipping set of ruby2_keywords flag for/)
end

it "prints warning when a proc accepts keyword splat" do
f = -> **a { }

-> {
f.ruby2_keywords
}.should complain(/Skipping set of ruby2_keywords flag for/)
end
end
end

0 comments on commit c614222

Please sign in to comment.