Skip to content

Commit 7763f11

Browse files
committed
Improved global config cleanup during testing.
1 parent 42d7646 commit 7763f11

File tree

2 files changed

+18
-21
lines changed

2 files changed

+18
-21
lines changed

spec/concurrent/configuration_spec.rb

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,17 @@ module Concurrent
55
before(:each) do
66
Concurrent.class_variable_set(
77
:@@global_fast_executor,
8-
Concurrent::Delay.new(executor: :immediate){ Concurrent::ImmediateExecutor.new })
8+
Concurrent::LazyReference.new{ Concurrent::ImmediateExecutor.new })
99
Concurrent.class_variable_set(
1010
:@@global_io_executor,
11-
Concurrent::Delay.new(executor: :immediate){ Concurrent::ImmediateExecutor.new })
11+
Concurrent::LazyReference.new{ Concurrent::ImmediateExecutor.new })
1212
Concurrent.class_variable_set(
1313
:@@global_timer_set,
14-
Concurrent::Delay.new(executor: :immediate){ Concurrent::ImmediateExecutor.new })
14+
Concurrent::LazyReference.new{ Concurrent::ImmediateExecutor.new })
1515
end
1616

1717
after(:each) do
18-
Concurrent.class_variable_set(
19-
:@@global_fast_executor,
20-
Concurrent::Delay.new(executor: :immediate){ Concurrent.new_fast_executor })
21-
Concurrent.class_variable_set(
22-
:@@global_io_executor,
23-
Concurrent::Delay.new(executor: :immediate){ Concurrent.new_io_executor })
24-
Concurrent.class_variable_set(
25-
:@@global_timer_set,
26-
Concurrent::Delay.new(executor: :immediate){ Concurrent::TimerSet.new })
18+
reset_gem_configuration
2719
end
2820

2921
context 'global executors' do

spec/support/example_group_extensions.rb

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
module Concurrent
55
module TestHelpers
6+
67
def delta(v1, v2)
78
if block_given?
89
v1 = yield(v1)
@@ -31,19 +32,23 @@ def do_no_reset!
3132
@do_not_reset = true
3233
end
3334

35+
GLOBAL_EXECUTORS = [
36+
[:@@global_fast_executor, ->{ LazyReference.new{ Concurrent.new_fast_executor }}],
37+
[:@@global_io_executor, ->{ LazyReference.new{ Concurrent.new_io_executor }}],
38+
[:@@global_timer_set, ->{ LazyReference.new{ Concurrent::TimerSet.new }}],
39+
]
40+
3441
@@killed = false
3542

3643
def reset_gem_configuration
3744
if @@killed
38-
Concurrent.class_variable_set(
39-
:@@global_fast_executor,
40-
Concurrent::Delay.new(executor: :immediate){ Concurrent.new_fast_executor })
41-
Concurrent.class_variable_set(
42-
:@@global_io_executor,
43-
Concurrent::Delay.new(executor: :immediate){ Concurrent.new_io_executor })
44-
Concurrent.class_variable_set(
45-
:@@global_timer_set,
46-
Concurrent::Delay.new(executor: :immediate){ Concurrent::TimerSet.new })
45+
GLOBAL_EXECUTORS.each do |var, factory|
46+
executor = Concurrent.class_variable_get(var).value
47+
executor.shutdown
48+
executor.kill
49+
executor = nil
50+
Concurrent.class_variable_set(var, factory.call)
51+
end
4752
@@killed = false
4853
end
4954
end

0 commit comments

Comments
 (0)