Always clear runner strategy after each test case
Otherwise, we get different test results depending on the test order.
This commit is contained in:
@ -225,8 +225,6 @@ describe ExecutionEnvironmentsController do
|
|||||||
let(:runner_management_config) { {runner_management: {enabled: true, strategy: :poseidon}} }
|
let(:runner_management_config) { {runner_management: {enabled: true, strategy: :poseidon}} }
|
||||||
|
|
||||||
before do
|
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(:new).with(:code_ocean).and_return(codeocean_config)
|
||||||
allow(codeocean_config).to receive(:read).and_return(runner_management_config)
|
allow(codeocean_config).to receive(:read).and_return(runner_management_config)
|
||||||
end
|
end
|
||||||
|
@ -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}} }
|
let(:runner_management_config) { {runner_management: {enabled: true, strategy: :poseidon, url: 'https://runners.example.org', unused_runner_expiration_time: 180}} }
|
||||||
|
|
||||||
before do
|
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(:new).with(:code_ocean).and_return(codeocean_config)
|
||||||
allow(codeocean_config).to receive(:read).and_return(runner_management_config)
|
allow(codeocean_config).to receive(:read).and_return(runner_management_config)
|
||||||
end
|
end
|
||||||
|
@ -34,8 +34,6 @@ describe Runner do
|
|||||||
let(:runner_management_config) { {runner_management: {enabled: true, strategy:}} }
|
let(:runner_management_config) { {runner_management: {enabled: true, strategy:}} }
|
||||||
|
|
||||||
before do
|
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(:new).with(:code_ocean).and_return(codeocean_config)
|
||||||
allow(codeocean_config).to receive(:read).and_return(runner_management_config)
|
allow(codeocean_config).to receive(:read).and_return(runner_management_config)
|
||||||
end
|
end
|
||||||
|
19
spec/support/runner.rb
Normal file
19
spec/support/runner.rb
Normal 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
|
Reference in New Issue
Block a user