Always clear runner strategy after each test case

Otherwise, we get different test results depending on the test order.
This commit is contained in:
Sebastian Serth
2023-06-22 19:45:10 +02:00
parent 837c904192
commit ccbf41005b
4 changed files with 19 additions and 6 deletions

View File

@ -225,8 +225,6 @@ describe ExecutionEnvironmentsController do
let(:runner_management_config) { {runner_management: {enabled: true, strategy: :poseidon}} }
before do
# Ensure to reset the memorized helper
Runner.instance_variable_set :@strategy_class, nil
allow(CodeOcean::Config).to receive(:new).with(:code_ocean).and_return(codeocean_config)
allow(codeocean_config).to receive(:read).and_return(runner_management_config)
end

View File

@ -13,8 +13,6 @@ describe Runner::Strategy::Poseidon do
let(:runner_management_config) { {runner_management: {enabled: true, strategy: :poseidon, url: 'https://runners.example.org', unused_runner_expiration_time: 180}} }
before do
# Ensure to reset the memorized helper
Runner.instance_variable_set :@strategy_class, nil
allow(CodeOcean::Config).to receive(:new).with(:code_ocean).and_return(codeocean_config)
allow(codeocean_config).to receive(:read).and_return(runner_management_config)
end

View File

@ -34,8 +34,6 @@ describe Runner do
let(:runner_management_config) { {runner_management: {enabled: true, strategy:}} }
before do
# Ensure to reset the memorized helper
described_class.instance_variable_set :@strategy_class, nil
allow(CodeOcean::Config).to receive(:new).with(:code_ocean).and_return(codeocean_config)
allow(codeocean_config).to receive(:read).and_return(runner_management_config)
end

19
spec/support/runner.rb Normal file
View File

@ -0,0 +1,19 @@
# frozen_string_literal: true
def reset_runner_strategy
Runner.instance_variable_set :@strategy_class, nil
Runner.instance_variable_set :@management_active, nil
end
RSpec.configure do |config|
# When starting the application, the environment is initialized with the default runner strategy:
# `Runner.strategy_class.initialize_environment` is called in `config/application.rb`.
config.before(:suite) do
reset_runner_strategy
end
# After each test, we reset the memorized runner strategy to the default (similar to the database cleaner).
config.append_after do
reset_runner_strategy
end
end