faraday 0.9.0 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE.md +1 -1
- data/README.md +52 -23
- data/lib/faraday.rb +1 -1
- data/lib/faraday/adapter/em_synchrony.rb +8 -0
- data/lib/faraday/adapter/excon.rb +1 -0
- data/lib/faraday/adapter/httpclient.rb +14 -3
- data/lib/faraday/adapter/net_http.rb +26 -20
- data/lib/faraday/adapter/net_http_persistent.rb +5 -3
- data/lib/faraday/adapter/patron.rb +13 -3
- data/lib/faraday/autoload.rb +0 -1
- data/lib/faraday/connection.rb +8 -3
- data/lib/faraday/options.rb +9 -0
- data/lib/faraday/parameters.rb +62 -58
- data/lib/faraday/rack_builder.rb +3 -2
- data/lib/faraday/request/retry.rb +40 -4
- data/lib/faraday/response.rb +2 -2
- data/lib/faraday/response/logger.rb +26 -1
- data/lib/faraday/utils.rb +13 -1
- metadata +61 -120
- checksums.yaml +0 -7
- data/.document +0 -6
- data/CHANGELOG.md +0 -15
- data/CONTRIBUTING.md +0 -36
- data/Gemfile +0 -29
- data/Rakefile +0 -71
- data/faraday.gemspec +0 -34
- data/script/console +0 -7
- data/script/generate_certs +0 -42
- data/script/package +0 -7
- data/script/proxy-server +0 -42
- data/script/release +0 -17
- data/script/server +0 -36
- data/script/test +0 -172
- data/test/adapters/default_test.rb +0 -14
- data/test/adapters/em_http_test.rb +0 -20
- data/test/adapters/em_synchrony_test.rb +0 -20
- data/test/adapters/excon_test.rb +0 -20
- data/test/adapters/httpclient_test.rb +0 -21
- data/test/adapters/integration.rb +0 -254
- data/test/adapters/logger_test.rb +0 -37
- data/test/adapters/net_http_persistent_test.rb +0 -20
- data/test/adapters/net_http_test.rb +0 -14
- data/test/adapters/patron_test.rb +0 -20
- data/test/adapters/rack_test.rb +0 -31
- data/test/adapters/test_middleware_test.rb +0 -114
- data/test/adapters/typhoeus_test.rb +0 -28
- data/test/authentication_middleware_test.rb +0 -65
- data/test/composite_read_io_test.rb +0 -111
- data/test/connection_test.rb +0 -522
- data/test/env_test.rb +0 -210
- data/test/helper.rb +0 -81
- data/test/live_server.rb +0 -67
- data/test/middleware/instrumentation_test.rb +0 -88
- data/test/middleware/retry_test.rb +0 -109
- data/test/middleware_stack_test.rb +0 -173
- data/test/multibyte.txt +0 -1
- data/test/options_test.rb +0 -252
- data/test/request_middleware_test.rb +0 -142
- data/test/response_middleware_test.rb +0 -72
- data/test/strawberry.rb +0 -2
- data/test/utils_test.rb +0 -58
data/.document
DELETED
data/CHANGELOG.md
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
# Faraday Changelog
|
2
|
-
|
3
|
-
## v0.9.0
|
4
|
-
|
5
|
-
* Add HTTPClient adapter (@hakanensari)
|
6
|
-
* Improve Retry handler (@mislav)
|
7
|
-
* Remove autoloading by default (@technoweenie)
|
8
|
-
* Improve internal docs (@technoweenie, @mislav)
|
9
|
-
* Respect user/password in http proxy string (@mislav)
|
10
|
-
* Adapter options are structs. Reinforces consistent options across adapters
|
11
|
-
(@technoweenie)
|
12
|
-
* Stop stripping trailing / off base URLs in a Faraday::Connection. (@technoweenie)
|
13
|
-
* Add a configurable URI parser. (@technoweenie)
|
14
|
-
* Remove need to manually autoload when using the authorization header helpers on `Faraday::Connection`. (@technoweenie)
|
15
|
-
* `Faraday::Adapter::Test` respects the `Faraday::RequestOptions#params_encoder` option. (@technoweenie)
|
data/CONTRIBUTING.md
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
## Contributing
|
2
|
-
|
3
|
-
You can run the test suite against a live server by running `script/test`. It
|
4
|
-
automatically starts a test server in background. Only tests in
|
5
|
-
`test/adapters/*_test.rb` require a server, though.
|
6
|
-
|
7
|
-
``` sh
|
8
|
-
# run the whole suite
|
9
|
-
$ script/test
|
10
|
-
|
11
|
-
# run only specific files
|
12
|
-
$ script/test excon typhoeus
|
13
|
-
|
14
|
-
# run tests using SSL
|
15
|
-
$ SSL=yes script/test
|
16
|
-
```
|
17
|
-
|
18
|
-
We will accept middleware that:
|
19
|
-
|
20
|
-
1. is useful to a broader audience, but can be implemented relatively
|
21
|
-
simple; and
|
22
|
-
2. which isn't already present in [faraday_middleware][] project.
|
23
|
-
|
24
|
-
We will accept adapters that:
|
25
|
-
|
26
|
-
1. support SSL & streaming;
|
27
|
-
1. are proven and may have better performance than existing ones; or
|
28
|
-
2. if they have features not present in included adapters.
|
29
|
-
|
30
|
-
We are pushing towards a 1.0 release, when we will have to follow [Semantic
|
31
|
-
Versioning][semver]. If your patch includes changes to break compatiblitity,
|
32
|
-
note that so we can add it to the [Changelog][].
|
33
|
-
|
34
|
-
[semver]: http://semver.org/
|
35
|
-
[changelog]: https://github.com/technoweenie/faraday/wiki/Changelog
|
36
|
-
[faraday_middleware]: https://github.com/pengwynn/faraday_middleware/wiki
|
data/Gemfile
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
source 'https://rubygems.org'
|
2
|
-
|
3
|
-
gem 'ffi-ncurses', '~> 0.3', :platforms => :jruby
|
4
|
-
gem 'jruby-openssl', '~> 0.8.8', :platforms => :jruby
|
5
|
-
gem 'rake'
|
6
|
-
|
7
|
-
group :test do
|
8
|
-
gem 'coveralls', :require => false
|
9
|
-
gem 'em-http-request', '>= 1.1', :require => 'em-http'
|
10
|
-
gem 'em-synchrony', '>= 1.0.3', :require => ['em-synchrony', 'em-synchrony/em-http']
|
11
|
-
gem 'excon', '>= 0.27.4'
|
12
|
-
gem 'httpclient', '>= 2.2'
|
13
|
-
gem 'leftright', '>= 0.9', :require => false
|
14
|
-
gem 'mime-types', '~> 1.25', :platforms => [:jruby, :ruby_18]
|
15
|
-
gem 'minitest', '>= 5.0.5'
|
16
|
-
gem 'net-http-persistent', '>= 2.5', :require => false
|
17
|
-
gem 'patron', '>= 0.4.2', :platforms => :ruby
|
18
|
-
gem 'rack-test', '>= 0.6', :require => 'rack/test'
|
19
|
-
gem 'simplecov'
|
20
|
-
gem 'sinatra', '~> 1.3'
|
21
|
-
gem 'typhoeus', '~> 0.3.3', :platforms => :ruby
|
22
|
-
end
|
23
|
-
|
24
|
-
platforms :rbx do
|
25
|
-
gem 'rubinius-coverage'
|
26
|
-
gem 'rubysl'
|
27
|
-
end
|
28
|
-
|
29
|
-
gemspec
|
data/Rakefile
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
require 'date'
|
2
|
-
require 'fileutils'
|
3
|
-
require 'openssl'
|
4
|
-
require 'rake/testtask'
|
5
|
-
require 'bundler'
|
6
|
-
Bundler::GemHelper.install_tasks
|
7
|
-
|
8
|
-
task :default => :test
|
9
|
-
|
10
|
-
## helper functions
|
11
|
-
|
12
|
-
def name
|
13
|
-
@name ||= Dir['*.gemspec'].first.split('.').first
|
14
|
-
end
|
15
|
-
|
16
|
-
def version
|
17
|
-
line = File.read("lib/#{name}.rb")[/^\s*VERSION\s*=\s*.*/]
|
18
|
-
line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1]
|
19
|
-
end
|
20
|
-
|
21
|
-
def gemspec_file
|
22
|
-
"#{name}.gemspec"
|
23
|
-
end
|
24
|
-
|
25
|
-
def gem_file
|
26
|
-
"#{name}-#{version}.gem"
|
27
|
-
end
|
28
|
-
|
29
|
-
def replace_header(head, header_name)
|
30
|
-
head.sub!(/(\.#{header_name}\s*= ').*'/) { "#{$1}#{send(header_name)}'"}
|
31
|
-
end
|
32
|
-
|
33
|
-
# Adapted from WEBrick::Utils. Skips cert extensions so it
|
34
|
-
# can be used as a CA bundle
|
35
|
-
def create_self_signed_cert(bits, cn, comment)
|
36
|
-
rsa = OpenSSL::PKey::RSA.new(bits)
|
37
|
-
cert = OpenSSL::X509::Certificate.new
|
38
|
-
cert.version = 2
|
39
|
-
cert.serial = 1
|
40
|
-
name = OpenSSL::X509::Name.new(cn)
|
41
|
-
cert.subject = name
|
42
|
-
cert.issuer = name
|
43
|
-
cert.not_before = Time.now
|
44
|
-
cert.not_after = Time.now + (365*24*60*60)
|
45
|
-
cert.public_key = rsa.public_key
|
46
|
-
cert.sign(rsa, OpenSSL::Digest::SHA1.new)
|
47
|
-
return [cert, rsa]
|
48
|
-
end
|
49
|
-
|
50
|
-
## standard tasks
|
51
|
-
|
52
|
-
desc "Run all tests"
|
53
|
-
task :test do
|
54
|
-
exec 'script/test'
|
55
|
-
end
|
56
|
-
|
57
|
-
desc "Generate certificates for SSL tests"
|
58
|
-
task :'test:generate_certs' do
|
59
|
-
cert, key = create_self_signed_cert(1024, [['CN', 'localhost']], 'Faraday Test CA')
|
60
|
-
FileUtils.mkdir_p 'tmp'
|
61
|
-
File.open('tmp/faraday-cert.key', 'w') {|f| f.puts(key) }
|
62
|
-
File.open('tmp/faraday-cert.crt', 'w') {|f| f.puts(cert.to_s) }
|
63
|
-
end
|
64
|
-
|
65
|
-
file 'tmp/faraday-cert.key' => :'test:generate_certs'
|
66
|
-
file 'tmp/faraday-cert.crt' => :'test:generate_certs'
|
67
|
-
|
68
|
-
desc "Open an irb session preloaded with this library"
|
69
|
-
task :console do
|
70
|
-
sh "irb -rubygems -r ./lib/#{name}.rb"
|
71
|
-
end
|
data/faraday.gemspec
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
lib = "faraday"
|
2
|
-
lib_file = File.expand_path("../lib/#{lib}.rb", __FILE__)
|
3
|
-
File.read(lib_file) =~ /\bVERSION\s*=\s*["'](.+?)["']/
|
4
|
-
version = $1
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.specification_version = 2 if spec.respond_to? :specification_version=
|
8
|
-
spec.required_rubygems_version = '>= 1.3.5'
|
9
|
-
|
10
|
-
spec.name = lib
|
11
|
-
spec.version = version
|
12
|
-
|
13
|
-
spec.summary = "HTTP/REST API client library."
|
14
|
-
|
15
|
-
spec.authors = ["Rick Olson"]
|
16
|
-
spec.email = 'technoweenie@gmail.com'
|
17
|
-
spec.homepage = 'https://github.com/lostisland/faraday'
|
18
|
-
spec.licenses = ['MIT']
|
19
|
-
|
20
|
-
spec.add_dependency 'multipart-post', '>= 1.2', '< 3'
|
21
|
-
spec.add_development_dependency 'bundler', '~> 1.0'
|
22
|
-
|
23
|
-
spec.files = %w(.document CHANGELOG.md CONTRIBUTING.md Gemfile LICENSE.md README.md Rakefile)
|
24
|
-
spec.files << "#{lib}.gemspec"
|
25
|
-
spec.files += Dir.glob("lib/**/*.rb")
|
26
|
-
spec.files += Dir.glob("test/**/*.{rb,txt}")
|
27
|
-
spec.files += Dir.glob("script/*")
|
28
|
-
|
29
|
-
dev_null = File.exist?('/dev/null') ? '/dev/null' : 'NUL'
|
30
|
-
git_files = `git ls-files -z 2>#{dev_null}`
|
31
|
-
spec.files &= git_files.split("\0") if $?.success?
|
32
|
-
|
33
|
-
spec.test_files = Dir.glob("test/**/*.rb")
|
34
|
-
end
|
data/script/console
DELETED
data/script/generate_certs
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# Usage: generate_certs
|
3
|
-
# Generate test certs for testing Faraday with SSL
|
4
|
-
|
5
|
-
require 'openssl'
|
6
|
-
require 'fileutils'
|
7
|
-
|
8
|
-
$shell = ARGV.include? '-s'
|
9
|
-
|
10
|
-
# Adapted from WEBrick::Utils. Skips cert extensions so it
|
11
|
-
# can be used as a CA bundle
|
12
|
-
def create_self_signed_cert(bits, cn, comment)
|
13
|
-
rsa = OpenSSL::PKey::RSA.new(bits)
|
14
|
-
cert = OpenSSL::X509::Certificate.new
|
15
|
-
cert.version = 2
|
16
|
-
cert.serial = 1
|
17
|
-
name = OpenSSL::X509::Name.new(cn)
|
18
|
-
cert.subject = name
|
19
|
-
cert.issuer = name
|
20
|
-
cert.not_before = Time.now
|
21
|
-
cert.not_after = Time.now + (365*24*60*60)
|
22
|
-
cert.public_key = rsa.public_key
|
23
|
-
cert.sign(rsa, OpenSSL::Digest::SHA1.new)
|
24
|
-
return [cert, rsa]
|
25
|
-
end
|
26
|
-
|
27
|
-
def write(file, contents, env_var)
|
28
|
-
FileUtils.mkdir_p(File.dirname(file))
|
29
|
-
File.open(file, 'w') {|f| f.puts(contents) }
|
30
|
-
puts %(export #{env_var}="#{file}") if $shell
|
31
|
-
end
|
32
|
-
|
33
|
-
|
34
|
-
# One cert / CA for ease of testing when ignoring verification
|
35
|
-
cert, key = create_self_signed_cert(1024, [['CN', 'localhost']], 'Faraday Test CA')
|
36
|
-
write 'tmp/faraday-cert.key', key, 'SSL_KEY'
|
37
|
-
write 'tmp/faraday-cert.crt', cert, 'SSL_FILE'
|
38
|
-
|
39
|
-
# And a second CA to prove that verification can fail
|
40
|
-
cert, key = create_self_signed_cert(1024, [['CN', 'real-ca.com']], 'A different CA')
|
41
|
-
write 'tmp/faraday-different-ca-cert.key', key, 'SSL_KEY_ALT'
|
42
|
-
write 'tmp/faraday-different-ca-cert.crt', cert, 'SSL_FILE_ALT'
|
data/script/package
DELETED
data/script/proxy-server
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# Usage: script/proxy-server [-p PORT] [-u USER:PASSWORD]
|
3
|
-
require 'webrick'
|
4
|
-
require 'webrick/httpproxy'
|
5
|
-
|
6
|
-
port = 4001
|
7
|
-
|
8
|
-
if found = ARGV.index('-p')
|
9
|
-
port = ARGV[found + 1].to_i
|
10
|
-
end
|
11
|
-
if found = ARGV.index('-u')
|
12
|
-
username, password = ARGV[found + 1].split(':', 2)
|
13
|
-
end
|
14
|
-
|
15
|
-
match_credentials = lambda { |credentials|
|
16
|
-
got_username, got_password = credentials.to_s.unpack("m*")[0].split(":", 2)
|
17
|
-
got_username == username && got_password == password
|
18
|
-
}
|
19
|
-
|
20
|
-
log_io = $stdout
|
21
|
-
log_io.sync = true
|
22
|
-
|
23
|
-
webrick_opts = {
|
24
|
-
:Port => port, :Logger => WEBrick::Log::new(log_io),
|
25
|
-
:AccessLog => [[log_io, "[%{X-Faraday-Adapter}i] %m %U -> %s %b"]],
|
26
|
-
:ProxyAuthProc => lambda { |req, res|
|
27
|
-
if username
|
28
|
-
type, credentials = req.header['proxy-authorization'].first.to_s.split(/\s+/, 2)
|
29
|
-
unless "Basic" == type && match_credentials.call(credentials)
|
30
|
-
res['proxy-authenticate'] = %{Basic realm="testing"}
|
31
|
-
raise WEBrick::HTTPStatus::ProxyAuthenticationRequired
|
32
|
-
end
|
33
|
-
end
|
34
|
-
}
|
35
|
-
}
|
36
|
-
|
37
|
-
proxy = WEBrick::HTTPProxyServer.new(webrick_opts)
|
38
|
-
|
39
|
-
trap(:TERM) { proxy.shutdown }
|
40
|
-
trap(:INT) { proxy.shutdown }
|
41
|
-
|
42
|
-
proxy.start
|
data/script/release
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
#!/usr/bin/env bash
|
2
|
-
# Usage: script/release
|
3
|
-
# Build the package, tag a commit, push it to origin, and then release the
|
4
|
-
# package publicly.
|
5
|
-
|
6
|
-
set -e
|
7
|
-
|
8
|
-
version="$(script/package | grep Version: | awk '{print $2}')"
|
9
|
-
[ -n "$version" ] || exit 1
|
10
|
-
|
11
|
-
git commit --allow-empty -a -m "Release $version"
|
12
|
-
git tag "v$version"
|
13
|
-
git push origin
|
14
|
-
git push origin "v$version"
|
15
|
-
git push legacy
|
16
|
-
git push legacy "v$version"
|
17
|
-
gem push pkg/*-${version}.gem
|
data/script/server
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
old_verbose, $VERBOSE = $VERBOSE, nil
|
3
|
-
begin
|
4
|
-
require File.expand_path('../../test/live_server', __FILE__)
|
5
|
-
ensure
|
6
|
-
$VERBOSE = old_verbose
|
7
|
-
end
|
8
|
-
require 'webrick'
|
9
|
-
|
10
|
-
port = 4000
|
11
|
-
if found = ARGV.index('-p')
|
12
|
-
port = ARGV[found + 1].to_i
|
13
|
-
end
|
14
|
-
|
15
|
-
log_io = $stdout
|
16
|
-
log_io.sync = true
|
17
|
-
|
18
|
-
webrick_opts = {
|
19
|
-
:Port => port, :Logger => WEBrick::Log::new(log_io),
|
20
|
-
:AccessLog => [[log_io, "[%{X-Faraday-Adapter}i] %m %U -> %s %b"]]
|
21
|
-
}
|
22
|
-
|
23
|
-
if ENV['SSL_KEY']
|
24
|
-
require 'openssl'
|
25
|
-
require 'webrick/https'
|
26
|
-
webrick_opts.update \
|
27
|
-
:SSLEnable => true,
|
28
|
-
:SSLPrivateKey => OpenSSL::PKey::RSA.new(File.read(ENV['SSL_KEY'])),
|
29
|
-
:SSLCertificate => OpenSSL::X509::Certificate.new(File.read(ENV['SSL_FILE'])),
|
30
|
-
:SSLVerifyClient => OpenSSL::SSL::VERIFY_NONE
|
31
|
-
end
|
32
|
-
|
33
|
-
Rack::Handler::WEBrick.run(Faraday::LiveServer, webrick_opts) do |server|
|
34
|
-
trap(:INT) { server.stop }
|
35
|
-
trap(:TERM) { server.stop }
|
36
|
-
end
|
data/script/test
DELETED
@@ -1,172 +0,0 @@
|
|
1
|
-
#!/usr/bin/env bash
|
2
|
-
# Usage: script/test [file] [adapter]... -- [test/unit options]
|
3
|
-
# Runs the test suite against a local server spawned automatically in a
|
4
|
-
# thread. After tests are done, the server is shut down.
|
5
|
-
#
|
6
|
-
# If filename arguments are given, only those files are run. If arguments given
|
7
|
-
# are not filenames, they are taken as words that filter the list of files to run.
|
8
|
-
#
|
9
|
-
# Examples:
|
10
|
-
#
|
11
|
-
# $ script/test
|
12
|
-
# $ script/test test/env_test.rb
|
13
|
-
# $ script/test excon typhoeus
|
14
|
-
#
|
15
|
-
# # Run only tests matching /ssl/ for the net_http adapter, with SSL enabled.
|
16
|
-
# $ SSL=yes script/test net_http -- -n /ssl/
|
17
|
-
#
|
18
|
-
# # Run against multiple rbenv versions
|
19
|
-
# $ RBENV_VERSIONS="1.9.3-p194 ree-1.8.7-2012.02" script/test
|
20
|
-
set -e
|
21
|
-
|
22
|
-
if [[ "$RUBYOPT" != *"bundler/setup"* ]]; then
|
23
|
-
export RUBYOPT="-rbundler/setup $RUBYOPT"
|
24
|
-
fi
|
25
|
-
|
26
|
-
port=3999
|
27
|
-
proxy_port=3998
|
28
|
-
scheme=http
|
29
|
-
|
30
|
-
if [ "$SSL" = "yes" ]; then
|
31
|
-
scheme=https
|
32
|
-
if [ -z "$SSL_KEY" ] || [ -z "$SSL_FILE" ]; then
|
33
|
-
eval "$(script/generate_certs -s)"
|
34
|
-
fi
|
35
|
-
fi
|
36
|
-
|
37
|
-
find_test_files() {
|
38
|
-
find "$1" -name '*_test.rb'
|
39
|
-
}
|
40
|
-
|
41
|
-
filter_matching() {
|
42
|
-
pattern="$1"
|
43
|
-
shift
|
44
|
-
for line in "$@"; do
|
45
|
-
[[ $line == *"$pattern"* ]] && echo "$line"
|
46
|
-
done
|
47
|
-
}
|
48
|
-
|
49
|
-
start_server() {
|
50
|
-
mkdir -p log
|
51
|
-
script/server -p $port >log/test.log 2>&1 &
|
52
|
-
echo $!
|
53
|
-
}
|
54
|
-
|
55
|
-
start_proxy() {
|
56
|
-
mkdir -p log
|
57
|
-
script/proxy-server -p $proxy_port -u "faraday@test.local:there is cake" >log/proxy.log 2>&1 &
|
58
|
-
echo $!
|
59
|
-
}
|
60
|
-
|
61
|
-
server_started() {
|
62
|
-
lsof -i :${1?} >/dev/null
|
63
|
-
}
|
64
|
-
|
65
|
-
timestamp() {
|
66
|
-
date +%s
|
67
|
-
}
|
68
|
-
|
69
|
-
wait_for_server() {
|
70
|
-
timeout=$(( `timestamp` + $1 ))
|
71
|
-
while true; do
|
72
|
-
if server_started "$2"; then
|
73
|
-
break
|
74
|
-
elif [ `timestamp` -gt "$timeout" ]; then
|
75
|
-
echo "timed out after $1 seconds" >&2
|
76
|
-
return 1
|
77
|
-
fi
|
78
|
-
done
|
79
|
-
}
|
80
|
-
|
81
|
-
filtered=
|
82
|
-
IFS=$'\n' test_files=($(find_test_files "test"))
|
83
|
-
declare -a explicit_files
|
84
|
-
|
85
|
-
# Process filter arguments:
|
86
|
-
# - test filenames as taken as-is
|
87
|
-
# - other words are taken as pattern to match the list of known files against
|
88
|
-
# - arguments after "--" are forwarded to the ruby process
|
89
|
-
while [ $# -gt 0 ]; do
|
90
|
-
arg="$1"
|
91
|
-
shift
|
92
|
-
if [ "$arg" = "--" ]; then
|
93
|
-
break
|
94
|
-
elif [ -f "$arg" ]; then
|
95
|
-
filtered=true
|
96
|
-
explicit_files[${#explicit_files[@]}+1]="$arg"
|
97
|
-
else
|
98
|
-
filtered=true
|
99
|
-
IFS=$'\n' explicit_files=(
|
100
|
-
${explicit_files[@]}
|
101
|
-
$(filter_matching "$arg" "${test_files[@]}" || true)
|
102
|
-
)
|
103
|
-
fi
|
104
|
-
done
|
105
|
-
|
106
|
-
# If there were filter args, replace test files list with the results
|
107
|
-
if [ -n "$filtered" ]; then
|
108
|
-
if [ ${#explicit_files[@]} -eq 0 ]; then
|
109
|
-
echo "Error: no test files match" >&2
|
110
|
-
exit 1
|
111
|
-
else
|
112
|
-
test_files=(${explicit_files[@]})
|
113
|
-
echo running "${test_files[@]}"
|
114
|
-
fi
|
115
|
-
fi
|
116
|
-
|
117
|
-
# If there are any adapter tests, spin up the HTTP server
|
118
|
-
if [ -n "$(filter_matching "adapters" "${test_files[@]}")" ]; then
|
119
|
-
if server_started $port; then
|
120
|
-
echo "aborted: another instance of server running on $port" >&2
|
121
|
-
exit 1
|
122
|
-
fi
|
123
|
-
server_pid=$(start_server)
|
124
|
-
proxy_pid=$(start_proxy)
|
125
|
-
wait_for_server 30 $port || {
|
126
|
-
cat log/test.log
|
127
|
-
kill "$server_pid"
|
128
|
-
kill "$proxy_pid"
|
129
|
-
exit 1
|
130
|
-
}
|
131
|
-
wait_for_server 5 $proxy_port
|
132
|
-
cleanup() {
|
133
|
-
if [ $? -ne 0 ] && [ -n "$TRAVIS" ]; then
|
134
|
-
cat log/test.log
|
135
|
-
fi
|
136
|
-
kill "$server_pid"
|
137
|
-
kill "$proxy_pid"
|
138
|
-
}
|
139
|
-
trap cleanup INT EXIT
|
140
|
-
export LIVE="${scheme}://localhost:${port}"
|
141
|
-
export LIVE_PROXY="http://faraday%40test.local:there%20is%20cake@localhost:${proxy_port}"
|
142
|
-
fi
|
143
|
-
|
144
|
-
warnings="${TMPDIR:-/tmp}/faraday-warnings.$$"
|
145
|
-
|
146
|
-
run_test_files() {
|
147
|
-
# Save warnings on stderr to a separate file
|
148
|
-
RUBYOPT="$RUBYOPT -w" ruby -e 'while f=ARGV.shift and f!="--"; load f; end' "${test_files[@]}" -- "$@" \
|
149
|
-
2> >(tee >(grep 'warning:' >"$warnings") | grep -v 'warning:')
|
150
|
-
}
|
151
|
-
|
152
|
-
check_warnings() {
|
153
|
-
# Display Ruby warnings from this project's source files. Abort if any were found.
|
154
|
-
num="$(grep -F "$PWD" "$warnings" | grep -v "${PWD}/bundle" | sort | uniq -c | sort -rn | tee /dev/stderr | wc -l)"
|
155
|
-
rm -f "$warnings"
|
156
|
-
if [ "$num" -gt 0 ]; then
|
157
|
-
echo "FAILED: this test suite doesn't tolerate Ruby syntax warnings!" >&2
|
158
|
-
exit 1
|
159
|
-
fi
|
160
|
-
}
|
161
|
-
|
162
|
-
if [ -n "$RBENV_VERSIONS" ]; then
|
163
|
-
IFS=' ' versions=($RBENV_VERSIONS)
|
164
|
-
for version in "${versions[@]}"; do
|
165
|
-
echo "[${version}]"
|
166
|
-
RBENV_VERSION="$version" run_test_files "$@"
|
167
|
-
done
|
168
|
-
else
|
169
|
-
run_test_files "$@"
|
170
|
-
fi
|
171
|
-
|
172
|
-
check_warnings
|