2009-12-31 18:56:23 +00:00
|
|
|
module Capybara
|
|
|
|
#Provides timeout similar to standard library Timeout, but avoids threads
|
|
|
|
class WaitUntil
|
2010-01-01 16:48:39 +00:00
|
|
|
|
2009-12-31 18:56:23 +00:00
|
|
|
class << self
|
2010-01-01 16:48:39 +00:00
|
|
|
|
2009-12-31 18:56:23 +00:00
|
|
|
def timeout(seconds = 1, &block)
|
|
|
|
start_time = Time.now
|
2010-01-01 16:48:39 +00:00
|
|
|
|
2009-12-31 18:56:23 +00:00
|
|
|
result = nil
|
2010-01-01 16:48:39 +00:00
|
|
|
|
|
|
|
until result
|
2009-12-31 18:56:23 +00:00
|
|
|
return result if result = yield
|
2010-01-01 16:48:39 +00:00
|
|
|
|
2009-12-31 18:56:23 +00:00
|
|
|
if (Time.now - start_time) > seconds
|
|
|
|
raise TimeoutError
|
|
|
|
end
|
2010-01-01 16:48:39 +00:00
|
|
|
end
|
2009-12-31 18:56:23 +00:00
|
|
|
end
|
2010-01-01 16:48:39 +00:00
|
|
|
|
|
|
|
end
|
2009-12-31 18:56:23 +00:00
|
|
|
end
|
2010-01-01 16:48:39 +00:00
|
|
|
end
|