From b882ab37df7d0a850d6e2091507dbc66d1ae2ea0 Mon Sep 17 00:00:00 2001 From: Konstantin Haase Date: Sun, 18 Mar 2012 14:33:48 +0100 Subject: [PATCH] retry failing integration tests --- test/integration_helper.rb | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/test/integration_helper.rb b/test/integration_helper.rb index 9807e87c..f36082bd 100644 --- a/test/integration_helper.rb +++ b/test/integration_helper.rb @@ -129,6 +129,17 @@ module IntegrationHelper def warnings log.scan(%r[(?:\(eval|lib/sinatra).*warning:.*$]) end + + def run_test(target, &block) + retries ||= 3 + target.server = self + run unless alive? + target.instance_eval(&block) + rescue Exception => error + retries -= 1 + kill + retries < 0 ? retry : raise(error) + end end if RUBY_ENGINE == "jruby" @@ -188,16 +199,7 @@ module IntegrationHelper def it(message, &block) Server.each do |server| next unless server.installed? - super "with #{server.name}: #{message}" do - self.server = server - server.run unless server.alive? - begin - instance_eval(&block) - rescue Exception => error - server.kill - raise error - end - end + super("with #{server.name}: #{message}") { server.run_test(self, &block) } end end