mirror of
				https://github.com/Shopify/liquid.git
				synced 2025-11-04 00:01:04 -05:00 
			
		
		
		
	fix: Clear the strainer cache when a global filter is added (#826)
This commit is contained in:
		
							parent
							
								
									86944fe7b7
								
							
						
					
					
						commit
						b146b49f46
					
				@ -39,6 +39,7 @@ module Liquid
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def self.global_filter(filter)
 | 
			
		||||
      @@strainer_class_cache.clear
 | 
			
		||||
      @@global_strainer.add_filter(filter)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -133,4 +133,16 @@ class StrainerUnitTest < Minitest::Test
 | 
			
		||||
    strainer.class.add_filter(PublicMethodOverrideFilter)
 | 
			
		||||
    assert strainer.class.filter_methods.include?('public_filter')
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  module LateAddedFilter
 | 
			
		||||
    def late_added_filter(input)
 | 
			
		||||
      "filtered"
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_global_filter_clears_cache
 | 
			
		||||
    assert_equal 'input', Strainer.create(nil).invoke('late_added_filter', 'input')
 | 
			
		||||
    Strainer.global_filter(LateAddedFilter)
 | 
			
		||||
    assert_equal 'filtered', Strainer.create(nil).invoke('late_added_filter', 'input')
 | 
			
		||||
  end
 | 
			
		||||
end # StrainerTest
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user