mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-18 02:10:41 -07:00
tests: reset Strainer's filters after modification
Three tests in the test suite use the Liquid::Template.register_filter function to register custom filters with Liquid::Strainer. The problem is that these register_filter calls leave the Liquid::Strainer object in an altered state. As an example, the FiltersTest's test_local_filter relies on the default behavior of Liquid::Strainer operator, and the test was failing if register_function had been called earlier. The same thing was happening with FiltersInTemplate's test_local_global. The problem was present when the Filters test classes were loaded inside a single ruby process that also loaded HashOrderingTest. One example is "rake test", which runs "require" on every test file. Another basic example is the following command: ruby -Itest -e "require 'integration/hash_ordering_test'; require 'integration/filter_test'" Update the tests to always reset Liquid::Strainer's filters back to the default list of filters. With this change, FiltersTest and FiltersInTemplate now pass.
This commit is contained in:
committed by
Florian Weingarten
parent
3e3a415457
commit
57d5426eed
@@ -16,10 +16,13 @@ class HashOrderingTest < Minitest::Test
|
||||
include Liquid
|
||||
|
||||
def test_global_register_order
|
||||
original_filters = Array.new(Strainer.class_eval('@@filters'))
|
||||
Template.register_filter(MoneyFilter)
|
||||
Template.register_filter(CanadianMoneyFilter)
|
||||
|
||||
assert_equal " 1000$ CAD ", Template.parse("{{1000 | money}}").render(nil, nil)
|
||||
ensure
|
||||
Strainer.class_eval('@@filters = ' + original_filters.to_s)
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user