mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-20 11:20:41 -07:00
Merge pull request #469 from Shopify/falsy-variable-fix
Fix case where a variable name is falsy
This commit is contained in:
@@ -83,7 +83,6 @@ module Liquid
|
|||||||
end
|
end
|
||||||
|
|
||||||
def render(context)
|
def render(context)
|
||||||
return ''.freeze unless @name
|
|
||||||
@filters.inject(context.evaluate(@name)) do |output, (filter_name, filter_args, filter_kwargs)|
|
@filters.inject(context.evaluate(@name)) do |output, (filter_name, filter_args, filter_kwargs)|
|
||||||
filter_args = evaluate_filter_expressions(context, filter_args, filter_kwargs)
|
filter_args = evaluate_filter_expressions(context, filter_args, filter_kwargs)
|
||||||
output = context.invoke(filter_name, output, *filter_args)
|
output = context.invoke(filter_name, output, *filter_args)
|
||||||
|
|||||||
@@ -10,6 +10,11 @@ class IfElseTagTest < Minitest::Test
|
|||||||
assert_template_result(' you rock ?','{% if false %} you suck {% endif %} {% if true %} you rock {% endif %}?')
|
assert_template_result(' you rock ?','{% if false %} you suck {% endif %} {% if true %} you rock {% endif %}?')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_literal_comparisons
|
||||||
|
assert_template_result(' NO ','{% assign v = false %}{% if v %} YES {% else %} NO {% endif %}')
|
||||||
|
assert_template_result(' YES ','{% assign v = nil %}{% if v == nil %} YES {% else %} NO {% endif %}')
|
||||||
|
end
|
||||||
|
|
||||||
def test_if_else
|
def test_if_else
|
||||||
assert_template_result(' YES ','{% if false %} NO {% else %} YES {% endif %}')
|
assert_template_result(' YES ','{% if false %} NO {% else %} YES {% endif %}')
|
||||||
assert_template_result(' YES ','{% if true %} YES {% else %} NO {% endif %}')
|
assert_template_result(' YES ','{% if true %} YES {% else %} NO {% endif %}')
|
||||||
|
|||||||
@@ -31,6 +31,12 @@ class VariableTest < Minitest::Test
|
|||||||
|
|
||||||
def test_false_renders_as_false
|
def test_false_renders_as_false
|
||||||
assert_equal 'false', Template.parse("{{ foo }}").render!('foo' => false)
|
assert_equal 'false', Template.parse("{{ foo }}").render!('foo' => false)
|
||||||
|
assert_equal 'false', Template.parse("{{ false }}").render!
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_nil_renders_as_empty_string
|
||||||
|
assert_equal '', Template.parse("{{ nil }}").render!
|
||||||
|
assert_equal 'cat', Template.parse("{{ nil | append: 'cat' }}").render!
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_preset_assigns
|
def test_preset_assigns
|
||||||
|
|||||||
Reference in New Issue
Block a user