diff --git a/lib/god/driver.rb b/lib/god/driver.rb index ec37c115..0590442e 100644 --- a/lib/god/driver.rb +++ b/lib/god/driver.rb @@ -179,7 +179,7 @@ def initialize(task) loop do begin @events.pop.handle_event - rescue ThreadError => e + rescue ThreadError, NoMethodError => e # queue is empty break rescue Object => e @@ -189,6 +189,7 @@ def initialize(task) end end end + @thread.abort_on_exception = true end # Check if we're in the driver context. diff --git a/test/test_driver.rb b/test/test_driver.rb index cac45de3..55485cb2 100644 --- a/test/test_driver.rb +++ b/test/test_driver.rb @@ -23,4 +23,12 @@ def test_push_pop_wait t.join end + + def test_handle_empty_queue + task = God::Task.new + driver = God::Driver.new(task) + + events = driver.instance_variable_get(:@events) + assert events.shutdown + end end