diff --git a/lib/liquid/tags/snippet.rb b/lib/liquid/tags/snippet.rb index c53da9f1..7853adc4 100644 --- a/lib/liquid/tags/snippet.rb +++ b/lib/liquid/tags/snippet.rb @@ -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 diff --git a/test/integration/tags/snippet_test.rb b/test/integration/tags/snippet_test.rb index 7a0383ad..37fa67ec 100644 --- a/test/integration/tags/snippet_test.rb +++ b/test/integration/tags/snippet_test.rb @@ -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