X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/c03195617369efedab9e14392c5ed14bb8700590..42c20b25e1325124b88e3b9b285544dc41122b56:/apps/workbench/test/test_helper.rb diff --git a/apps/workbench/test/test_helper.rb b/apps/workbench/test/test_helper.rb index bbd733bb47..2e8ead94cd 100644 --- a/apps/workbench/test/test_helper.rb +++ b/apps/workbench/test/test_helper.rb @@ -61,11 +61,11 @@ class ActiveSupport::TestCase end def self.reset_application_config - $application_config.each do |k,v| - if k.match /^[^.]*$/ - Rails.configuration.send (k + '='), v - end - end + # Restore configuration settings changed during tests + ConfigLoader.copy_into_config $arvados_config, Rails.configuration + ConfigLoader.copy_into_config $remaining_config, Rails.configuration + Rails.configuration.Services.Controller.ExternalURL = URI("https://#{ENV['ARVADOS_API_HOST']}") + Rails.configuration.TLS.Insecure = true end end @@ -158,7 +158,7 @@ class ActiveSupport::TestCase } end def json_response - Oj.load(@response.body) + Oj.safe_load(@response.body) end end @@ -207,9 +207,6 @@ class ApiServerForTests end run_test_server - $application_config['arvados_login_base'] = "https://#{ENV['ARVADOS_API_HOST']}/login" - $application_config['arvados_v1_base'] = "https://#{ENV['ARVADOS_API_HOST']}/arvados/v1" - $application_config['arvados_insecure_host'] = true ActiveSupport::TestCase.reset_application_config @@server_is_running = true @@ -292,7 +289,7 @@ class ActiveSupport::TestCase def after_teardown if self.class.want_reset_api_fixtures[:after_each_test] and - @want_reset_api_fixtures != false + (!defined?(@want_reset_api_fixtures) or @want_reset_api_fixtures != false) self.class.reset_api_fixtures_now end super @@ -351,3 +348,30 @@ end # Reset fixtures now (i.e., before any tests run). ActiveSupport::TestCase.reset_api_fixtures_now + +module Minitest + class Test + def capture_exceptions *args + begin + n = 0 + begin + yield + rescue *PASSTHROUGH_EXCEPTIONS + raise + rescue Exception => e + n += 1 + raise if n > 2 || e.is_a?(Skip) + STDERR.puts "Test failed, retrying (##{n})" + ActiveSupport::TestCase.reset_api_fixtures_now + retry + end + rescue *PASSTHROUGH_EXCEPTIONS + raise + rescue Assertion => e + self.failures << e + rescue Exception => e + self.failures << UnexpectedError.new(e) + end + end + end +end