Skip to content

Commit

Permalink
Test against faraday 2.x. Drop support for faraday < 0.17
Browse files Browse the repository at this point in the history
By dropping support for faraday < 0.17 we can simplify the default exceptions the middleware watches for.
  • Loading branch information
matthewshafer committed Apr 3, 2023
1 parent 8111df0 commit 8132b25
Show file tree
Hide file tree
Showing 8 changed files with 17 additions and 16 deletions.
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,10 @@ end

## Faraday

Circuitbox ships with [Faraday HTTP client](https://github.com/lostisland/faraday) middleware.
Circuitbox ships with a [Faraday HTTP client](https://github.com/lostisland/faraday) middleware.
The versions of faraday the middleware has been tested against is `>= 0.17` through `~> 2.0`.
The middleware does not support parallel requests through a connections `in_parallel` method.


```ruby
require 'faraday'
Expand Down
2 changes: 1 addition & 1 deletion ci/Gemfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
source 'https://rubygems.org'

gem 'faraday', "~> 1.0.0"
gem 'faraday', "~> 2.0"

gemspec(path: '../')
2 changes: 1 addition & 1 deletion ci/Gemfile.oldfaraday → ci/Gemfile.faraday-0-17
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
source 'https://rubygems.org'

gem 'faraday', "~> 0.8.0"
gem 'faraday', "~> 0.17"

gemspec(path: '../')
5 changes: 5 additions & 0 deletions ci/Gemfile.faraday-1-0
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
source 'https://rubygems.org'

gem 'faraday', "~> 1.0"

gemspec(path: '../')
2 changes: 1 addition & 1 deletion circuitbox.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Gem::Specification.new do |spec|

spec.add_development_dependency 'bundler', '> 2.0'
spec.add_development_dependency 'excon', '~> 0.71'
spec.add_development_dependency 'faraday', ['>= 0.8', '< 2.0']
spec.add_development_dependency 'faraday', '>= 0.17'
spec.add_development_dependency 'gimme', '~> 0.5'
spec.add_development_dependency 'minitest', '~> 5.14'
spec.add_development_dependency 'minitest-excludes', '~> 2.0'
Expand Down
5 changes: 1 addition & 4 deletions lib/circuitbox/faraday_middleware.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,7 @@ def initialize(response = nil, exception = nil)
}.freeze

DEFAULT_EXCEPTIONS = [
# Faraday before 0.9.0 didn't have Faraday::TimeoutError so we default to Faraday::Error::TimeoutError
# Faraday >= 0.9.0 defines Faraday::TimeoutError and this can be used for all versions up to 1.0.0 that
# also define and raise Faraday::Error::TimeoutError as Faraday::TimeoutError is an ancestor
defined?(Faraday::TimeoutError) ? Faraday::TimeoutError : Faraday::Error::TimeoutError,
Faraday::TimeoutError,
RequestFailed
].freeze

Expand Down
4 changes: 3 additions & 1 deletion test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,10 @@ run_tests "ci/Gemfile"

run_tests "ci/Gemfile.activesupport"

run_tests "ci/Gemfile.faraday-1-0"

if ruby -e "exit 1 if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.0.0')"; then
run_tests "ci/Gemfile.oldfaraday"
run_tests "ci/Gemfile.faraday-0-17"
else
cat <<-SKIP
############################################
Expand Down
8 changes: 1 addition & 7 deletions test/faraday_middleware_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -81,16 +81,10 @@ def test_overwrite_default_value_generator_static_value

def test_default_exceptions
middleware = FaradayMiddleware.new(app)

faraday_version = Gem::Version.new(Faraday::VERSION).segments
faraday_major = faraday_version[0]
faraday_minor = faraday_version[1]

faraday_exception = faraday_major.positive? || faraday_minor > 8 ? Faraday::TimeoutError : Faraday::Error::TimeoutError
middleware_opts = opts_from(middleware)
circuit_breaker_options = middleware_opts[:circuit_breaker_options]

assert_includes circuit_breaker_options[:exceptions], faraday_exception
assert_includes circuit_breaker_options[:exceptions], Faraday::TimeoutError
assert_includes circuit_breaker_options[:exceptions], FaradayMiddleware::RequestFailed
end

Expand Down

0 comments on commit 8132b25

Please sign in to comment.