Skip to content

Commit

Permalink
Prevent an internal error in include tag from non-string template_name
Browse files Browse the repository at this point in the history
which would otherwise happen on `template_name.split('/')`
  • Loading branch information
dylanahsmith committed Oct 28, 2022
1 parent f484b86 commit db8e85a
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/liquid/tags/include.rb
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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

0 comments on commit db8e85a

Please sign in to comment.