Missing inline snippets should display same error as filebased

This commit is contained in:
Julia Boutin
2025-10-30 12:00:44 +01:00
committed by Guilherme Carreiro
parent 5ceb0e9cec
commit 12fd93fbe2
6 changed files with 106 additions and 14 deletions
-7
View File
@@ -101,13 +101,6 @@ class RenderTagTest < Minitest::Test
end
end
def test_dynamically_chosen_templates_are_not_allowed
error = assert_raises(::ArgumentError) do
Template.parse('{% assign name = "snippet" %}{% render name %}').render!
end
assert_equal("Argument error in tag 'render' - Dynamically chosen templates are not allowed", error.message)
end
def test_rigid_parsing_errors
with_error_modes(:lax, :strict) do
assert_template_result(
+96
View File
@@ -480,6 +480,54 @@ class SnippetTest < Minitest::Test
assert_match("Expected end_of_string but found id", exception.message)
end
def test_render_with_non_existent_tag
template = Liquid::Template.parse(<<~LIQUID.chomp, line_numbers: true)
{% snippet foo %}
{% render non_existent %}
{% endsnippet %}
{% render foo %}
LIQUID
expected = <<~TEXT
Liquid error (index line 2): This liquid context does not allow includes
TEXT
template.name = "index"
assert_equal(expected, template.render('errors' => ErrorDrop.new))
end
def test_render_handles_errors
template = Liquid::Template.parse(<<~LIQUID.chomp, line_numbers: true)
{% snippet foo %}
{% render non_existent %} will raise an error.
Bla bla test.
This is an argument error: {{ 'test' | slice: 'not a number' }}
{% endsnippet %}
{% render foo %}
LIQUID
expected = <<~TEXT
Liquid error (index line 2): This liquid context does not allow includes will raise an error.
Bla bla test.
This is an argument error: Liquid error (index line 6): invalid integer
TEXT
template.name = "index"
assert_equal(expected, template.render('errors' => ErrorDrop.new))
end
end
class RigidMode < SnippetTest
@@ -956,6 +1004,54 @@ class SnippetTest < Minitest::Test
assert_match("Expected a string or identifier, found 123", exception.message)
end
def test_render_with_non_existent_tag
template = Liquid::Template.parse(<<~LIQUID.chomp, line_numbers: true, error_mode: :rigid)
{% snippet foo %}
{% render non_existent %}
{% endsnippet %}
{% render foo %}
LIQUID
expected = <<~TEXT
Liquid error (index line 2): This liquid context does not allow includes
TEXT
template.name = "index"
assert_equal(expected, template.render('errors' => ErrorDrop.new))
end
def test_render_handles_errors
template = Liquid::Template.parse(<<~LIQUID.chomp, line_numbers: true, error_mode: :rigid)
{% snippet foo %}
{% render non_existent %} will raise an error.
Bla bla test.
This is an argument error: {{ 'test' | slice: 'not a number' }}
{% endsnippet %}
{% render foo %}
LIQUID
expected = <<~TEXT
Liquid error (index line 2): This liquid context does not allow includes will raise an error.
Bla bla test.
This is an argument error: Liquid error (index line 6): invalid integer
TEXT
template.name = "index"
assert_equal(expected, template.render('errors' => ErrorDrop.new))
end
def test_render_with_no_identifier
template = "{% render %}"