diff --git a/lib/liquid/condition.rb b/lib/liquid/condition.rb index 69224ab..ade7ac1 100644 --- a/lib/liquid/condition.rb +++ b/lib/liquid/condition.rb @@ -15,7 +15,7 @@ module Liquid '>' => :>, '>=' => :>=, '<=' => :<=, - 'contains' => lambda { |cond, left, right| left.include?(right) }, + 'contains' => lambda { |cond, left, right| left && right ? left.include?(right) : false } } def self.operators diff --git a/test/condition_test.rb b/test/condition_test.rb index 7739bd9..0a45482 100644 --- a/test/condition_test.rb +++ b/test/condition_test.rb @@ -60,6 +60,12 @@ class ConditionTest < Test::Unit::TestCase end + def test_contains_returns_false_for_nil_operands + @context = Liquid::Context.new + assert_evalutes_false "not_assigned", 'contains', '0' + assert_evalutes_false "0", 'contains', 'not_assigned' + end + def test_or_condition condition = Condition.new('1', '==', '2')