Fix Drop#key? so it can handle a nil argument (#6281)

Merge pull request 6281
This commit is contained in:
Parker Moore 2017-08-08 23:10:38 -04:00 committed by jekyllbot
parent 3fab69e3c9
commit bd31986ad6
2 changed files with 6 additions and 2 deletions

View File

@ -72,7 +72,7 @@ module Jekyll
def []=(key, val) def []=(key, val)
if respond_to?("#{key}=") if respond_to?("#{key}=")
public_send("#{key}=", val) public_send("#{key}=", val)
elsif respond_to? key elsif respond_to?(key.to_s)
if self.class.mutable? if self.class.mutable?
@mutations[key] = val @mutations[key] = val
else else
@ -106,7 +106,7 @@ module Jekyll
if self.class.mutable if self.class.mutable
@mutations.key?(key) @mutations.key?(key)
else else
respond_to?(key) || fallback_data.key?(key) !key.nil? && (respond_to?(key) || fallback_data.key?(key))
end end
end end

View File

@ -15,6 +15,10 @@ class TestDrop < JekyllUnitTest
@drop = @document.to_liquid @drop = @document.to_liquid
end end
should "reject 'nil' key" do
refute @drop.key?(nil)
end
should "raise KeyError if key is not found and no default provided" do should "raise KeyError if key is not found and no default provided" do
assert_raises KeyError do assert_raises KeyError do
@drop.fetch("not_existing_key") @drop.fetch("not_existing_key")