From 72c2db0a9696efb26b95b3921e73616cc0e6b8fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Luis=20Leal=20Cardoso=20Junior?= Date: Sun, 19 Jul 2026 19:11:06 -0300 Subject: [PATCH 1/2] Avoid recomputing active_experiments when finishing an experiment --- lib/split/helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/split/helper.rb b/lib/split/helper.rb index 5e1b2b7f..9bda570c 100644 --- a/lib/split/helper.rb +++ b/lib/split/helper.rb @@ -45,7 +45,7 @@ def reset!(experiment) end def finish_experiment(experiment, options = { reset: true }) - return false if active_experiments[experiment.name].nil? + return false if ab_user[experiment.key].nil? return true if experiment.has_winner? should_reset = experiment.resettable? && options[:reset] if ab_user[experiment.finished_key] && !should_reset From 96f88835b2e66b2af0fbd321997444dfddbbe5ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Luis=20Leal=20Cardoso=20Junior?= Date: Sun, 19 Jul 2026 16:07:47 -0300 Subject: [PATCH 2/2] Test that ab_finished skips experiments under an active override --- spec/helper_spec.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/spec/helper_spec.rb b/spec/helper_spec.rb index 1fe4484f..c87a22ef 100755 --- a/spec/helper_spec.rb +++ b/spec/helper_spec.rb @@ -402,6 +402,25 @@ expect(ab_user.keys).to be_empty end + context "when an override is present for the experiment" do + it "should not increment the completed counter" do + @params = { "ab_test" => { @experiment_name => @alternative_name } } + + expect { + ab_finished(@experiment_name) + }.not_to change { Split::Alternative.new(@alternative_name, @experiment_name).completed_count } + end + + it "should not touch the user's participation" do + @params = { "ab_test" => { @experiment_name => @alternative_name } } + + ab_finished(@experiment_name) + + expect(ab_user[@experiment.key]).to eq(@alternative_name) + expect(ab_user[@experiment.finished_key]).to be_nil + end + end + context "when on_trial_complete is set" do before { Split.configuration.on_trial_complete = :some_method } it "should call the method" do