From fcb23a4cd21c419d752c3dd140b16ab9fc61fdf2 Mon Sep 17 00:00:00 2001 From: Justin Li Date: Mon, 27 Oct 2014 13:34:27 -0400 Subject: [PATCH] Disallow filters with no variable in strict mode --- lib/liquid/variable.rb | 2 +- test/integration/parsing_quirks_test.rb | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/liquid/variable.rb b/lib/liquid/variable.rb index 5e18710..d74d756 100644 --- a/lib/liquid/variable.rb +++ b/lib/liquid/variable.rb @@ -63,7 +63,7 @@ module Liquid @filters = [] p = Parser.new(markup) # Could be just filters with no input - @name = p.look(:pipe) ? nil : Expression.parse(p.expression) + @name = Expression.parse(p.expression) while p.consume?(:pipe) filtername = p.consume(:id) filterargs = p.consume?(:colon) ? parse_filterargs(p) : [] diff --git a/test/integration/parsing_quirks_test.rb b/test/integration/parsing_quirks_test.rb index a484a96..f2167af 100644 --- a/test/integration/parsing_quirks_test.rb +++ b/test/integration/parsing_quirks_test.rb @@ -28,11 +28,14 @@ class ParsingQuirksTest < Minitest::Test def test_error_on_empty_filter assert Template.parse("{{test}}") - assert Template.parse("{{|test}}") + + with_error_mode(:lax) do + assert Template.parse("{{|test}}") + end + with_error_mode(:strict) do - assert_raises(SyntaxError) do - Template.parse("{{test |a|b|}}") - end + assert_raises(SyntaxError) { Template.parse("{{|test}}") } + assert_raises(SyntaxError) { Template.parse("{{test |a|b|}}") } end end