mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-19 19:00:39 -07:00
make Template override static registers only when the register key is not defined
This commit is contained in:
@@ -212,7 +212,7 @@ module Liquid
|
|||||||
end
|
end
|
||||||
|
|
||||||
Template.registers.each do |key, register|
|
Template.registers.each do |key, register|
|
||||||
context_register[key] = register
|
context_register[key] = register unless context_register.key?(key)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Retrying a render resets resource usage
|
# Retrying a render resets resource usage
|
||||||
|
|||||||
@@ -362,6 +362,50 @@ class TemplateTest < Minitest::Test
|
|||||||
assert_equal('12345', result)
|
assert_equal('12345', result)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_render_uses_correct_disabled_tags_instance
|
||||||
|
Liquid::Template.file_system = StubFileSystem.new(
|
||||||
|
'foo' => 'bar',
|
||||||
|
'test_include' => '{% include "foo" %}'
|
||||||
|
)
|
||||||
|
|
||||||
|
disabled_tags = DisabledTags.new
|
||||||
|
context = Context.build(registers: { disabled_tags: disabled_tags })
|
||||||
|
|
||||||
|
source = "{% render 'test_include' %}"
|
||||||
|
parse_context = Liquid::ParseContext.new(line_numbers: true, error_mode: :strict)
|
||||||
|
document = Document.parse(Liquid::Tokenizer.new(source, true), parse_context)
|
||||||
|
|
||||||
|
assert_equal("include usage is not allowed in this context", document.render(context))
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_render_sets_context_static_register_when_register_key_does_exist
|
||||||
|
disabled_tags_for_test = DisabledTags.new
|
||||||
|
Template.add_register(:disabled_tags, disabled_tags_for_test)
|
||||||
|
|
||||||
|
t = Template.parse("{% if true %} Test Template {% endif %}")
|
||||||
|
|
||||||
|
context = Context.new
|
||||||
|
refute(context.registers.key?(:disabled_tags))
|
||||||
|
|
||||||
|
t.render(context)
|
||||||
|
|
||||||
|
assert(context.registers.key?(:disabled_tags))
|
||||||
|
assert_equal(disabled_tags_for_test, context.registers[:disabled_tags])
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_render_does_not_override_context_static_register_when_register_key_exists
|
||||||
|
context = Context.new
|
||||||
|
context.registers[:random_register] = nil
|
||||||
|
Template.add_register(:random_register, {})
|
||||||
|
|
||||||
|
t = Template.parse("{% if true %} Test Template {% endif %}")
|
||||||
|
|
||||||
|
t.render(context)
|
||||||
|
|
||||||
|
assert_nil(context.registers[:random_register])
|
||||||
|
assert(context.registers.key?(:random_register))
|
||||||
|
end
|
||||||
|
|
||||||
unless taint_supported?
|
unless taint_supported?
|
||||||
def test_taint_mode
|
def test_taint_mode
|
||||||
assert_raises(NotImplementedError) do
|
assert_raises(NotImplementedError) do
|
||||||
|
|||||||
Reference in New Issue
Block a user