提交 a3e49041 编写于 作者: J Jeremy Kemper

Fix leaky `only: …` option for Active Job assertions

The filter was set on the pseudo-global TestAdapter but not restored to
its original value.

See e818f657
上级 e81693a0
......@@ -13,6 +13,7 @@ def before_setup
clear_performed_jobs
queue_adapter.perform_enqueued_jobs = false
queue_adapter.perform_enqueued_at_jobs = false
queue_adapter.filter = nil
super
end
......@@ -253,15 +254,20 @@ def assert_performed_with(args = {}, &_block)
end
def perform_enqueued_jobs(only: nil)
@old_perform_enqueued_jobs = queue_adapter.perform_enqueued_jobs
@old_perform_enqueued_at_jobs = queue_adapter.perform_enqueued_at_jobs
queue_adapter.perform_enqueued_jobs = true
queue_adapter.perform_enqueued_at_jobs = true
queue_adapter.filter = only
yield
ensure
queue_adapter.perform_enqueued_jobs = @old_perform_enqueued_jobs
queue_adapter.perform_enqueued_at_jobs = @old_perform_enqueued_at_jobs
old_perform_enqueued_jobs = queue_adapter.perform_enqueued_jobs
old_perform_enqueued_at_jobs = queue_adapter.perform_enqueued_at_jobs
old_filter = queue_adapter.filter
begin
queue_adapter.perform_enqueued_jobs = true
queue_adapter.perform_enqueued_at_jobs = true
queue_adapter.filter = only
yield
ensure
queue_adapter.perform_enqueued_jobs = old_perform_enqueued_jobs
queue_adapter.perform_enqueued_at_jobs = old_perform_enqueued_at_jobs
queue_adapter.filter = old_filter
end
end
def queue_adapter
......
......@@ -199,6 +199,14 @@ def test_assert_enqueued_job_failure_with_global_id_args
end
class PerformedJobsTest < ActiveJob::TestCase
def test_performed_enqueue_jobs_with_only_option_doesnt_leak_outside_the_block
assert_equal nil, queue_adapter.filter
perform_enqueued_jobs only: HelloJob do
assert_equal HelloJob, queue_adapter.filter
end
assert_equal nil, queue_adapter.filter
end
def test_assert_performed_jobs
assert_nothing_raised do
assert_performed_jobs 1 do
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册