Raise error on invalid snippet name

This commit is contained in:
Julia Boutin
2025-10-30 12:00:44 +01:00
committed by Guilherme Carreiro
parent 98fbd985d8
commit 5ceb0e9cec
2 changed files with 22 additions and 5 deletions
+2 -1
View File
@@ -10,7 +10,7 @@ module Liquid
# @liquid_description
# You can create inline snippets to make your Liquid code more modular.
# @liquid_syntax
# {% snippet input %}
# {% snippet snippet_name %}
# value
# {% endsnippet %}
class Snippet < Block
@@ -19,6 +19,7 @@ module Liquid
p = @parse_context.new_parser(markup)
if p.look(:id)
@to = p.consume(:id)
p.consume(:end_of_string)
else
raise SyntaxError, options[:locale].t("errors.syntax.snippet")
end
+20 -4
View File
@@ -468,6 +468,18 @@ class SnippetTest < Minitest::Test
assert_template_result(expected, template)
end
def test_snippet_with_invalid_identifier
template = <<~LIQUID
{% snippet header foo bar %}
Invalid
{% endsnippet %}
LIQUID
exception = assert_raises(SyntaxError) { Liquid::Template.parse(template) }
assert_match("Expected end_of_string but found id", exception.message)
end
end
class RigidMode < SnippetTest
@@ -934,7 +946,7 @@ class SnippetTest < Minitest::Test
assert_template_result(expected, template, error_mode: :rigid)
end
def test_render_with_invalid_identifier_type
def test_render_with_invalid_identifier
template = "{% render 123 %}"
exception = assert_raises(SyntaxError) do
@@ -954,14 +966,18 @@ class SnippetTest < Minitest::Test
assert_match("Expected a string or identifier, found nothing", exception.message)
end
def test_render_with_invalid_identifier
template = "{% render 123 %}"
def test_snippet_with_invalid_identifier
template = <<~LIQUID
{% snippet header foo bar %}
Invalid
{% endsnippet %}
LIQUID
exception = assert_raises(SyntaxError) do
Liquid::Template.parse(template, error_mode: :rigid)
end
assert_match("Expected a string or identifier, found 123", exception.message)
assert_match("Expected end_of_string but found id", exception.message)
end
end