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 f05a230 commit 8b61655
Showing 1 changed file with 63 additions and 0 deletions.
63 changes: 63 additions & 0 deletions core/proc/ruby2_keywords_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
require_relative '../../spec_helper'

ruby_version_is "2.7" do
# Note: these specs should be synched with Module#ruby2_keywords specs
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

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

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 8b61655

Please sign in to comment.