Merge pull request #1648 from Shopify/fix-include-internal-error

Prevent an internal error in include tag from non-string template_name
This commit is contained in:
Dylan Thacker-Smith
2022-10-28 14:29:03 -04:00
committed by GitHub
3 changed files with 7 additions and 2 deletions
+1 -1
View File
@@ -52,7 +52,7 @@ module Liquid
def render_to_output_buffer(context, output)
template_name = context.evaluate(@template_name_expr)
raise ArgumentError, options[:locale].t("errors.argument.include") unless template_name
raise ArgumentError, options[:locale].t("errors.argument.include") unless template_name.is_a?(String)
partial = PartialCache.load(
template_name,
@@ -249,6 +249,11 @@ class IncludeTagTest < Minitest::Test
"{% include nil %}", render_errors: true)
end
def test_render_raise_argument_error_when_template_is_not_a_string
assert_template_result("Liquid error (line 1): Argument error in tag 'include' - Illegal template name",
"{% include 123 %}", render_errors: true)
end
def test_including_via_variable_value
assert_template_result("from TestFileSystem", "{% assign page = 'pick_a_source' %}{% include page %}",
partials: { "pick_a_source" => "from TestFileSystem" })
+1 -1
View File
@@ -42,7 +42,7 @@ module Minitest
message: nil, partials: nil, error_mode: nil, render_errors: false
)
template = Liquid::Template.parse(template, line_numbers: true, error_mode: error_mode&.to_sym)
file_system = StubFileSystem.new(partials) if partials
file_system = StubFileSystem.new(partials || {})
registers = Liquid::Registers.new(file_system: file_system)
context = Liquid::Context.build(environments: assigns, rethrow_errors: !render_errors, registers: registers)
output = template.render(context)