From 4522c23c2efedb86a5d36735904b1a1751df8e51 Mon Sep 17 00:00:00 2001 From: Ian Ker-Seymer Date: Mon, 27 Apr 2026 15:28:32 -0400 Subject: [PATCH 1/2] Restore counter behavior in ToSDrop --- lib/liquid/spec/deps/liquid_ruby.rb | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/lib/liquid/spec/deps/liquid_ruby.rb b/lib/liquid/spec/deps/liquid_ruby.rb index f0ab173..ffa074e 100644 --- a/lib/liquid/spec/deps/liquid_ruby.rb +++ b/lib/liquid/spec/deps/liquid_ruby.rb @@ -77,25 +77,33 @@ class ToSDrop < Liquid::Drop # {"instantiate:ToSDrop" => {"to_s" => "hello"}} # # to_s returns "hello" # - # Also accepts "foo" param for legacy TestThing compatibility: + # Legacy TestThing format: foo is a counter, incremented on each to_s call. + # This lets specs verify that to_s was actually called by the filter. # {"instantiate:ToSDrop" => {"foo" => 3}} - # # to_s returns "woot: 3" + # # first to_s call: counter becomes 4, returns "woot: 4" def initialize(params = {}) params = { "to_s" => params } unless params.is_a?(Hash) - @to_s_value = if params.key?("to_s") || params.key?(:to_s) - params["to_s"] || params[:to_s] || "" + if params.key?("to_s") || params.key?(:to_s) + @to_s_value = params["to_s"] || params[:to_s] || "" + @counter = nil elsif params.key?("foo") || params.key?(:foo) - # Legacy TestThing format - "woot: #{params["foo"] || params[:foo]}" + @counter = params["foo"] || params[:foo] + @to_s_value = nil else - "" + @to_s_value = "" + @counter = nil end end def to_s - @to_s_value.to_s + if @counter + @counter += 1 + "woot: #{@counter}" + else + @to_s_value.to_s + end end def to_liquid From 16122a934b09114bee436edc41f9eae42200a809 Mon Sep 17 00:00:00 2001 From: Ian Ker-Seymer Date: Mon, 27 Apr 2026 15:31:13 -0400 Subject: [PATCH 2/2] Track to_liquid calls instead of to_s calls in ToSDrop counter --- lib/liquid/spec/deps/liquid_ruby.rb | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/liquid/spec/deps/liquid_ruby.rb b/lib/liquid/spec/deps/liquid_ruby.rb index ffa074e..425cc1a 100644 --- a/lib/liquid/spec/deps/liquid_ruby.rb +++ b/lib/liquid/spec/deps/liquid_ruby.rb @@ -77,36 +77,38 @@ class ToSDrop < Liquid::Drop # {"instantiate:ToSDrop" => {"to_s" => "hello"}} # # to_s returns "hello" # - # Legacy TestThing format: foo is a counter, incremented on each to_s call. - # This lets specs verify that to_s was actually called by the filter. + # Legacy TestThing format: foo is a starting counter; to_liquid increments it. + # This lets specs verify that to_liquid was called by the filter pipeline. # {"instantiate:ToSDrop" => {"foo" => 3}} - # # first to_s call: counter becomes 4, returns "woot: 4" + # # after one to_liquid call, to_s returns "woot: 4" + # # after two to_liquid calls, to_s returns "woot: 5" def initialize(params = {}) params = { "to_s" => params } unless params.is_a?(Hash) if params.key?("to_s") || params.key?(:to_s) @to_s_value = params["to_s"] || params[:to_s] || "" - @counter = nil + @initial_foo = nil elsif params.key?("foo") || params.key?(:foo) - @counter = params["foo"] || params[:foo] + @initial_foo = params["foo"] || params[:foo] + @call_count = 0 @to_s_value = nil else @to_s_value = "" - @counter = nil + @initial_foo = nil end end def to_s - if @counter - @counter += 1 - "woot: #{@counter}" + if @initial_foo + "woot: #{@initial_foo + @call_count}" else @to_s_value.to_s end end def to_liquid + @call_count += 1 if @initial_foo self end end