diff --git a/lib/liquid/context.rb b/lib/liquid/context.rb index 1ef272d46..433b6d003 100644 --- a/lib/liquid/context.rb +++ b/lib/liquid/context.rb @@ -184,7 +184,7 @@ def [](expression) end def key?(key) - self[key] != nil + find_variable(key, raise_on_not_found: false) != nil end def evaluate(object) diff --git a/test/integration/context_test.rb b/test/integration/context_test.rb index f59147e29..d230734f6 100644 --- a/test/integration/context_test.rb +++ b/test/integration/context_test.rb @@ -639,6 +639,21 @@ def test_has_key_will_not_add_an_error_for_missing_keys end end + def test_key_lookup_will_raise_for_missing_keys_when_strict_variables_is_enabled + context = Context.new + context.strict_variables = true + assert_raises(Liquid::UndefinedVariable) do + context['unknown'] + end + end + + def test_has_key_will_not_raise_for_missing_keys_when_strict_variables_is_enabled + context = Context.new + context.strict_variables = true + refute(context.key?('unknown')) + assert_empty(context.errors) + end + def test_context_always_uses_static_registers registers = { my_register: :my_value,