mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-12 23:40:45 -07:00
tests: reset "contains" op during IfElseTagTest
Two tests in IfElseTagTest each set a custom operator function for the "contains" comparison operator. The problem is that IfElseTagTest was clobbering the original operator in Liquid and leaving it in an altered state. As an example, ConditionUnitTest's test_contains_works_on_arrays relies on the specific behavior of the "contains" operator, and its test_contains_works_on_arrays was failing. The problem was present when both test classes were require'd inside a single ruby process. One example is "rake test", which runs "require" on every test file. Another basic example is the following command: ruby -Itest -e "require 'integration/tags/if_else_tag_test.rb'; require 'unit/condition_unit_test.rb'" This would cause test_contains_works_on_arrays to fail. Update IfElseTagTest to avoid clobbering the "contains" operator. With this change, ConditionUnitTest's test_contains_works_on_arrays now passes.
This commit is contained in:
committed by
Florian Weingarten
parent
ee4295c889
commit
deba039d6d
@@ -137,19 +137,23 @@ class IfElseTagTest < Minitest::Test
|
||||
end
|
||||
|
||||
def test_if_with_custom_condition
|
||||
original_op = Condition.operators['contains']
|
||||
Condition.operators['contains'] = :[]
|
||||
|
||||
assert_template_result('yes', %({% if 'bob' contains 'o' %}yes{% endif %}))
|
||||
assert_template_result('no', %({% if 'bob' contains 'f' %}yes{% else %}no{% endif %}))
|
||||
ensure
|
||||
Condition.operators.delete 'contains'
|
||||
Condition.operators['contains'] = original_op
|
||||
end
|
||||
|
||||
def test_operators_are_ignored_unless_isolated
|
||||
original_op = Condition.operators['contains']
|
||||
Condition.operators['contains'] = :[]
|
||||
|
||||
assert_template_result('yes',
|
||||
%({% if 'gnomeslab-and-or-liquid' contains 'gnomeslab-and-or-liquid' %}yes{% endif %}))
|
||||
ensure
|
||||
Condition.operators['contains'] = original_op
|
||||
end
|
||||
|
||||
def test_operators_are_whitelisted
|
||||
|
||||
Reference in New Issue
Block a user