From 86e5fa4ee396aadb4a2dc795c68d9c9be0b8cca7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mislav=20Marohni=C4=87?= Date: Fri, 2 Oct 2015 00:20:55 +0200 Subject: [PATCH 1/3] em-http: wrap "connection closed by server" as ConnectionFailed type This is bizarrely returned by em-http when failing to authenticate with the proxy server, but only on Travis and not on my Mac. https://travis-ci.org/lostisland/faraday/jobs/83207905 --- lib/faraday/adapter/em_synchrony.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/faraday/adapter/em_synchrony.rb b/lib/faraday/adapter/em_synchrony.rb index 305e702f..5a766777 100644 --- a/lib/faraday/adapter/em_synchrony.rb +++ b/lib/faraday/adapter/em_synchrony.rb @@ -70,6 +70,12 @@ module Faraday else raise Error::ConnectionFailed, err end + rescue RuntimeError => err + if err.message == "connection closed by server" + raise Error::ConnectionFailed, err + else + raise + end rescue => err if defined?(OpenSSL) && OpenSSL::SSL::SSLError === err raise Faraday::SSLError, err From bc453746c106d69900a0043180464819453bcc34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mislav=20Marohni=C4=87?= Date: Fri, 2 Oct 2015 00:22:51 +0200 Subject: [PATCH 2/3] Output proxy log as well after CI failure --- script/test | 1 + 1 file changed, 1 insertion(+) diff --git a/script/test b/script/test index 180dbdd3..961d0fc3 100755 --- a/script/test +++ b/script/test @@ -132,6 +132,7 @@ if [ -n "$(filter_matching "adapters" "${test_files[@]}")" ]; then cleanup() { if [ $? -ne 0 ] && [ -n "$TRAVIS" ]; then cat log/test.log + cat log/proxy.log fi kill "$server_pid" kill "$proxy_pid" From ab9a0fb4ad24c0740ccc4552d98af15c38b01475 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mislav=20Marohni=C4=87?= Date: Fri, 2 Oct 2015 01:03:00 +0200 Subject: [PATCH 3/3] Skip proxy auth test for EM due to em-socksify bug --- test/adapters/integration.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/adapters/integration.rb b/test/adapters/integration.rb index 4e0f81cf..800ee388 100644 --- a/test/adapters/integration.rb +++ b/test/adapters/integration.rb @@ -207,8 +207,10 @@ module Adapters conn.get '/echo' end - unless self.class.ssl_mode? && self.class.jruby? + unless self.class.ssl_mode? && (self.class.jruby? || + adapter == :em_http || adapter == :em_synchrony) # JRuby raises "End of file reached" which cannot be distinguished from a 407 + # EM raises "connection closed by server" due to https://github.com/igrigorik/em-socksify/pull/19 assert_equal %{407 "Proxy Authentication Required "}, err.message end end