@@ -480,6 +480,54 @@ def test_snippet_with_invalid_identifier
480480
481481 assert_match ( "Expected end_of_string but found id" , exception . message )
482482 end
483+
484+ def test_render_with_non_existent_tag
485+ template = Liquid ::Template . parse ( <<~LIQUID . chomp , line_numbers : true )
486+ {% snippet foo %}
487+ {% render non_existent %}
488+ {% endsnippet %}
489+
490+ {% render foo %}
491+ LIQUID
492+
493+ expected = <<~TEXT
494+
495+
496+
497+ Liquid error (index line 2): This liquid context does not allow includes
498+ TEXT
499+ template . name = "index"
500+
501+ assert_equal ( expected , template . render ( 'errors' => ErrorDrop . new ) )
502+ end
503+
504+ def test_render_handles_errors
505+ template = Liquid ::Template . parse ( <<~LIQUID . chomp , line_numbers : true )
506+ {% snippet foo %}
507+ {% render non_existent %} will raise an error.
508+
509+ Bla bla test.
510+
511+ This is an argument error: {{ 'test' | slice: 'not a number' }}
512+ {% endsnippet %}
513+
514+ {% render foo %}
515+ LIQUID
516+
517+ expected = <<~TEXT
518+
519+
520+
521+ Liquid error (index line 2): This liquid context does not allow includes will raise an error.
522+
523+ Bla bla test.
524+
525+ This is an argument error: Liquid error (index line 6): invalid integer
526+ TEXT
527+ template . name = "index"
528+
529+ assert_equal ( expected , template . render ( 'errors' => ErrorDrop . new ) )
530+ end
483531 end
484532
485533 class RigidMode < SnippetTest
@@ -956,6 +1004,54 @@ def test_render_with_invalid_identifier
9561004 assert_match ( "Expected a string or identifier, found 123" , exception . message )
9571005 end
9581006
1007+ def test_render_with_non_existent_tag
1008+ template = Liquid ::Template . parse ( <<~LIQUID . chomp , line_numbers : true , error_mode : :rigid )
1009+ {% snippet foo %}
1010+ {% render non_existent %}
1011+ {% endsnippet %}
1012+
1013+ {% render foo %}
1014+ LIQUID
1015+
1016+ expected = <<~TEXT
1017+
1018+
1019+
1020+ Liquid error (index line 2): This liquid context does not allow includes
1021+ TEXT
1022+ template . name = "index"
1023+
1024+ assert_equal ( expected , template . render ( 'errors' => ErrorDrop . new ) )
1025+ end
1026+
1027+ def test_render_handles_errors
1028+ template = Liquid ::Template . parse ( <<~LIQUID . chomp , line_numbers : true , error_mode : :rigid )
1029+ {% snippet foo %}
1030+ {% render non_existent %} will raise an error.
1031+
1032+ Bla bla test.
1033+
1034+ This is an argument error: {{ 'test' | slice: 'not a number' }}
1035+ {% endsnippet %}
1036+
1037+ {% render foo %}
1038+ LIQUID
1039+
1040+ expected = <<~TEXT
1041+
1042+
1043+
1044+ Liquid error (index line 2): This liquid context does not allow includes will raise an error.
1045+
1046+ Bla bla test.
1047+
1048+ This is an argument error: Liquid error (index line 6): invalid integer
1049+ TEXT
1050+ template . name = "index"
1051+
1052+ assert_equal ( expected , template . render ( 'errors' => ErrorDrop . new ) )
1053+ end
1054+
9591055 def test_render_with_no_identifier
9601056 template = "{% render %}"
9611057
0 commit comments