Skip to content

Commit

Permalink
Merge pull request #1648 from Shopify/fix-include-internal-error
Browse files Browse the repository at this point in the history
Prevent an internal error in include tag from non-string template_name
  • Loading branch information
dylanahsmith committed Oct 28, 2022
2 parents 3e8994c + db8e85a commit ace3fe1
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 2 deletions.
2 changes: 1 addition & 1 deletion lib/liquid/tags/include.rb
Expand Up @@ -52,7 +52,7 @@ def parse(_tokens)

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,
Expand Down
5 changes: 5 additions & 0 deletions test/integration/tags/include_tag_test.rb
Expand Up @@ -249,6 +249,11 @@ def test_render_raise_argument_error_when_template_is_undefined
"{% 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" })
Expand Down
2 changes: 1 addition & 1 deletion test/test_helper.rb
Expand Up @@ -42,7 +42,7 @@ def assert_template_result(
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)
Expand Down

0 comments on commit ace3fe1

Please sign in to comment.