faraday 0.8.1 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,13 +1,13 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  group :development do
4
- gem 'sinatra', '~> 1.2'
4
+ gem 'sinatra', '~> 1.3'
5
5
  end
6
6
 
7
7
  group :test do
8
8
  gem 'em-http-request', '~> 1.0', :require => 'em-http'
9
9
  gem 'em-synchrony', '~> 1.0', :require => ['em-synchrony', 'em-synchrony/em-http'], :platforms => :ruby_19
10
- gem 'excon', '~> 0.6'
10
+ gem 'excon', '>= 0.14.1'
11
11
  gem 'net-http-persistent', '~> 2.5', :require => false
12
12
  gem 'leftright', '~> 0.9', :require => false
13
13
  gem 'rack-test', '~> 0.6', :require => 'rack/test'
@@ -15,7 +15,7 @@ end
15
15
 
16
16
  platforms :ruby do
17
17
  gem 'patron', '~> 0.4', '> 0.4.1'
18
- gem 'typhoeus', '~> 0.3', '> 0.3.2'
18
+ gem 'typhoeus', '~> 0.3.3'
19
19
  end
20
20
 
21
21
  platforms :jruby do
data/README.md CHANGED
@@ -1,6 +1,4 @@
1
- # Faraday [![Build Status](https://secure.travis-ci.org/technoweenie/faraday.png?branch=master)][travis] [![Dependency Status](https://gemnasium.com/technoweenie/faraday.png?travis)][gemnasium]
2
- [travis]: http://travis-ci.org/technoweenie/faraday
3
- [gemnasium]: https://gemnasium.com/technoweenie/faraday
1
+ # Faraday
4
2
 
5
3
  Faraday is an HTTP client lib that provides a common interface over many
6
4
  adapters (such as Net::HTTP) and embraces the concept of Rack middleware when
@@ -8,11 +6,11 @@ processing the request/response cycle.
8
6
 
9
7
  Faraday supports these adapters:
10
8
 
11
- * Net/HTTP
12
- * Excon
13
- * Typhoeus
14
- * Patron
15
- * EventMachine
9
+ * Net::HTTP
10
+ * [Excon][]
11
+ * [Typhoeus][]
12
+ * [Patron][]
13
+ * [EventMachine][]
16
14
 
17
15
  It also includes a Rack adapter for hitting loaded Rack applications through
18
16
  Rack::Test, and a Test adapter for stubbing requests by hand.
@@ -20,15 +18,10 @@ Rack::Test, and a Test adapter for stubbing requests by hand.
20
18
  ## Usage
21
19
 
22
20
  ```ruby
23
- conn = Faraday.new(:url => 'http://sushi.com') do |builder|
24
- builder.use Faraday::Request::UrlEncoded # convert request params as "www-form-urlencoded"
25
- builder.use Faraday::Response::Logger # log the request to STDOUT
26
- builder.use Faraday::Adapter::NetHttp # make http requests with Net::HTTP
27
-
28
- # or, use shortcuts:
29
- builder.request :url_encoded
30
- builder.response :logger
31
- builder.adapter :net_http
21
+ conn = Faraday.new(:url => 'http://sushi.com') do |faraday|
22
+ faraday.request :url_encoded # form-encode POST params
23
+ faraday.response :logger # log requests to STDOUT
24
+ faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
32
25
  end
33
26
 
34
27
  ## GET ##
@@ -36,7 +29,7 @@ end
36
29
  response = conn.get '/nigiri/sake.json' # GET http://sushi.com/nigiri/sake.json
37
30
  response.body
38
31
 
39
- conn.get '/nigiri', { :name => 'Maguro' } # GET /nigiri?name=Maguro
32
+ conn.get '/nigiri', { :name => 'Maguro' } # GET /nigiri?name=Maguro
40
33
 
41
34
  conn.get do |req| # GET http://sushi.com/search?page=2&limit=100
42
35
  req.url '/search', :page => 2
@@ -54,7 +47,7 @@ conn.post do |req|
54
47
  req.body = '{ "name": "Unagi" }'
55
48
  end
56
49
 
57
- ## Options ##
50
+ ## Per-request options ##
58
51
 
59
52
  conn.get do |req|
60
53
  req.url '/search'
@@ -63,25 +56,26 @@ conn.get do |req|
63
56
  end
64
57
  ```
65
58
 
66
- If you're ready to roll with just the bare minimum:
59
+ If you don't need to set up anything, you can roll with just the bare minimum:
67
60
 
68
61
  ```ruby
69
- # default stack (net/http), no extra middleware:
62
+ # using the default stack:
70
63
  response = Faraday.get 'http://sushi.com/nigiri/sake.json'
71
64
  ```
72
65
 
73
66
  ## Advanced middleware usage
67
+
74
68
  The order in which middleware is stacked is important. Like with Rack, the
75
69
  first middleware on the list wraps all others, while the last middleware is the
76
- innermost one, so that's usually the adapter.
70
+ innermost one, so that must be the adapter.
77
71
 
78
72
  ```ruby
79
- conn = Faraday.new(:url => 'http://sushi.com') do |builder|
73
+ Faraday.new(...) do |conn|
80
74
  # POST/PUT params encoders:
81
- builder.request :multipart
82
- builder.request :url_encoded
75
+ conn.request :multipart
76
+ conn.request :url_encoded
83
77
 
84
- builder.adapter :net_http
78
+ conn.adapter :net_http
85
79
  end
86
80
  ```
87
81
 
@@ -99,18 +93,17 @@ process it.
99
93
  Examples:
100
94
 
101
95
  ```ruby
102
- payload = { :name => 'Maguro' }
103
-
104
96
  # uploading a file:
105
- payload = { :profile_pic => Faraday::UploadIO.new('avatar.jpg', 'image/jpeg') }
97
+ payload[:profile_pic] = Faraday::UploadIO.new('/path/to/avatar.jpg', 'image/jpeg')
106
98
 
107
99
  # "Multipart" middleware detects files and encodes with "multipart/form-data":
108
100
  conn.put '/profile', payload
109
101
  ```
110
102
 
111
103
  ## Writing middleware
112
- Middleware are classes that respond to `call()`. They wrap the request/response
113
- cycle.
104
+
105
+ Middleware are classes that implement a `call` instance method. They hook into
106
+ the request/response cycle.
114
107
 
115
108
  ```ruby
116
109
  def call(env)
@@ -142,7 +135,7 @@ later, response. Some keys are:
142
135
  :response_headers
143
136
  ```
144
137
 
145
- ## Testing
138
+ ## Using Faraday for testing
146
139
 
147
140
  ```ruby
148
141
  # It's possible to define stubbed request outside a test adapter block.
@@ -178,36 +171,51 @@ stubs.verify_stubbed_calls
178
171
  ```
179
172
 
180
173
  ## TODO
174
+
181
175
  * support streaming requests/responses
182
176
  * better stubbing API
183
177
 
184
- ## Note on Patches/Pull Requests
185
- 1. Fork the project.
186
- 2. Make your feature addition or bug fix.
187
- 3. Add tests for it. This is important so I don't break it in a future version
188
- unintentionally.
189
- 4. Commit, do not mess with rakefile, version, or history. (if you want to have
190
- your own version, that is fine but bump version in a commit by itself I can
191
- ignore when I pull)
192
- 5. Send us a pull request. Bonus points for topic branches.
178
+ ## Contributing
179
+
180
+ You can run the test suite against a live server by running `script/test`. It
181
+ automatically starts a test server in background. Only tests in
182
+ `test/adapters/*_test.rb` require a server, though.
183
+
184
+ ``` sh
185
+ # run the whole suite
186
+ $ script/test
187
+
188
+ # run only specific files
189
+ $ script/test excon typhoeus
190
+ ```
191
+
192
+ We will accept middleware that:
193
+
194
+ 1. is useful to a broader audience, but can be implemented relatively
195
+ simple; and
196
+ 2. which isn't already present in [faraday_middleware][] project.
197
+
198
+ We will accept adapters that:
199
+
200
+ 1. support SSL & streaming;
201
+ 1. are proven and may have better performance than existing ones; or
202
+ 2. if they have features not present in included adapters.
193
203
 
194
204
  We are pushing towards a 1.0 release, when we will have to follow [Semantic
195
- Versioning](http://semver.org/). If your patch includes changes to break
196
- compatiblitity, note that so we can add it to the [Changelog](https://github.com/technoweenie/faraday/wiki/Changelog).
205
+ Versioning][semver]. If your patch includes changes to break compatiblitity,
206
+ note that so we can add it to the [Changelog][].
207
+
208
+ ## Supported Ruby versions
197
209
 
198
- ## Supported Ruby Versions
199
210
  This library aims to support and is [tested against][travis] the following Ruby
200
211
  implementations:
201
212
 
202
- * Ruby 1.8.7
203
- * Ruby 1.9.2
204
- * Ruby 1.9.3
205
- * JRuby[]
213
+ * MRI 1.8.7
214
+ * MRI 1.9.2
215
+ * MRI 1.9.3
216
+ * [JRuby][]
206
217
  * [Rubinius][]
207
218
 
208
- [jruby]: http://jruby.org/
209
- [rubinius]: http://rubini.us/
210
-
211
219
  If something doesn't work on one of these interpreters, it should be considered
212
220
  a bug.
213
221
 
@@ -223,7 +231,20 @@ timely fashion. If critical issues for a particular implementation exist at the
223
231
  time of a major release, support for that Ruby version may be dropped.
224
232
 
225
233
  ## Copyright
234
+
226
235
  Copyright (c) 2009-2012 [Rick Olson](mailto:technoweenie@gmail.com), zack hobson.
227
236
  See [LICENSE][] for details.
228
237
 
229
- [license]: https://github.com/technoweenie/faraday/blob/master/LICENSE.md
238
+
239
+ [license]: https://github.com/technoweenie/faraday/blob/master/LICENSE.md
240
+ [travis]: http://travis-ci.org/technoweenie/faraday
241
+ [jruby]: http://jruby.org/
242
+ [rubinius]: http://rubini.us/
243
+ [semver]: http://semver.org/
244
+ [changelog]: https://github.com/technoweenie/faraday/wiki/Changelog
245
+ [excon]: https://github.com/geemus/excon#readme
246
+ [typhoeus]: https://github.com/typhoeus/typhoeus#readme
247
+ [patron]: http://toland.github.com/patron/
248
+
249
+ [eventmachine]: https://github.com/igrigorik/em-http-request#readme
250
+ [faraday_middleware]: https://github.com/pengwynn/faraday_middleware/wiki
data/Rakefile CHANGED
@@ -28,16 +28,9 @@ end
28
28
 
29
29
  ## standard tasks
30
30
 
31
- Rake::TestTask.new(:test) do |test|
32
- test.libs << 'lib' << 'test'
33
- test.pattern = 'test/**/*_test.rb'
34
- test.verbose = true
35
- end
36
-
37
- desc "Run tests including live tests against a local server on port 4567"
38
- task :"test:local" do
39
- ENV['LIVE'] = '1'
40
- Rake::Task[:test].invoke
31
+ desc "Run all tests"
32
+ task :test do
33
+ exec 'script/test'
41
34
  end
42
35
 
43
36
  desc "Open an irb session preloaded with this library"
@@ -51,7 +44,7 @@ desc "Commit, create tag v#{version} and build and push #{gem_file} to Rubygems"
51
44
  task :release => :build do
52
45
  sh "git commit --allow-empty -a -m 'Release #{version}'"
53
46
  sh "git tag v#{version}"
54
- sh "git push origin master"
47
+ sh "git push origin"
55
48
  sh "git push origin v#{version}"
56
49
  sh "gem push pkg/#{gem_file}"
57
50
  end
@@ -3,7 +3,7 @@ Gem::Specification.new do |s|
3
3
  s.required_rubygems_version = Gem::Requirement.new(">= 1.3.5") if s.respond_to? :required_rubygems_version=
4
4
 
5
5
  s.name = 'faraday'
6
- s.version = '0.8.1'
6
+ s.version = '0.8.2'
7
7
 
8
8
  s.summary = "HTTP/REST API client library."
9
9
  # TODO: s.description
@@ -16,7 +16,6 @@ Gem::Specification.new do |s|
16
16
  s.add_development_dependency 'rake'
17
17
  s.add_development_dependency 'simplecov'
18
18
  s.add_development_dependency 'test-unit'
19
- s.add_development_dependency 'webmock'
20
19
 
21
20
  # = MANIFEST =
22
21
  s.files = %w[
@@ -54,6 +53,7 @@ Gem::Specification.new do |s|
54
53
  lib/faraday/response/raise_error.rb
55
54
  lib/faraday/upload_io.rb
56
55
  lib/faraday/utils.rb
56
+ script/test
57
57
  test/adapters/default_test.rb
58
58
  test/adapters/em_http_test.rb
59
59
  test/adapters/em_synchrony_test.rb
@@ -1,5 +1,5 @@
1
1
  module Faraday
2
- VERSION = "0.8.1"
2
+ VERSION = "0.8.2"
3
3
 
4
4
  class << self
5
5
  attr_accessor :root_path, :lib_path
@@ -6,22 +6,49 @@ module Faraday
6
6
  def call(env)
7
7
  super
8
8
 
9
- conn = ::Excon.new(env[:url].to_s)
9
+ opts = {}
10
10
  if env[:url].scheme == 'https' && ssl = env[:ssl]
11
- ::Excon.ssl_verify_peer = !!ssl.fetch(:verify, true)
12
- ::Excon.ssl_ca_path = ssl[:ca_file] if ssl[:ca_file]
11
+ opts[:ssl_verify_peer] = !!ssl.fetch(:verify, true)
12
+ opts[:ssl_ca_path] = ssl[:ca_path] if ssl[:ca_path]
13
+ opts[:ssl_ca_file] = ssl[:ca_file] if ssl[:ca_file]
13
14
  end
14
15
 
16
+ if ( req = env[:request] )
17
+ if req[:timeout]
18
+ opts[:read_timeout] = req[:timeout]
19
+ opts[:connect_timeout] = req[:timeout]
20
+ opts[:write_timeout] = req[:timeout]
21
+ end
22
+
23
+ if req[:open_timeout]
24
+ opts[:connect_timeout] = req[:open_timeout]
25
+ opts[:write_timeout] = req[:open_timeout]
26
+ end
27
+ end
28
+
29
+ conn = ::Excon.new(env[:url].to_s, opts)
30
+
15
31
  resp = conn.request \
16
32
  :method => env[:method].to_s.upcase,
17
33
  :headers => env[:request_headers],
18
- :body => env[:body]
34
+ :body => read_body(env)
19
35
 
20
36
  save_response(env, resp.status.to_i, resp.body, resp.headers)
21
37
 
22
38
  @app.call env
23
- rescue ::Excon::Errors::SocketError
24
- raise Error::ConnectionFailed, $!
39
+ rescue ::Excon::Errors::SocketError => err
40
+ if err.message =~ /\btimeout\b/
41
+ raise Error::TimeoutError, err
42
+ else
43
+ raise Error::ConnectionFailed, err
44
+ end
45
+ rescue ::Excon::Errors::Timeout => err
46
+ raise Error::TimeoutError, err
47
+ end
48
+
49
+ # TODO: support streaming requests
50
+ def read_body(env)
51
+ env[:body].respond_to?(:read) ? env[:body].read : env[:body]
25
52
  end
26
53
  end
27
54
  end
@@ -17,7 +17,8 @@ module Faraday
17
17
  Net::HTTPBadResponse,
18
18
  Net::HTTPHeaderSyntaxError,
19
19
  Net::ProtocolError,
20
- SocketError
20
+ SocketError,
21
+ Zlib::GzipFile::Error,
21
22
  ]
22
23
 
23
24
  NET_HTTP_EXCEPTIONS << OpenSSL::SSL::SSLError if defined?(OpenSSL)
@@ -13,7 +13,7 @@ module Faraday
13
13
  # end
14
14
  #
15
15
  # Faraday.new do |conn|
16
- # conn.adapter :rack, MyRackApp
16
+ # conn.adapter :rack, MyRackApp.new
17
17
  # end
18
18
  class Rack < Faraday::Adapter
19
19
  dependency 'rack/test'
@@ -0,0 +1,99 @@
1
+ #!/usr/bin/env ruby -rubygems -w
2
+ # Runs the test suite against a local server spawned automatically in a
3
+ # thread. After tests are done, the server is shut down.
4
+ #
5
+ # If filename arguments are given, only those files are run. If arguments given
6
+ # are not filenames, they are taken as words that filter the list of files to run.
7
+ #
8
+ # Examples
9
+ #
10
+ # $ script/test
11
+ # $ script/test test/env_test.rb
12
+ # $ script/test excon typhoeus
13
+
14
+ require 'bundler'
15
+ begin
16
+ Bundler.setup
17
+ rescue Bundler::GemNotFound
18
+ $stderr.print "Error: "
19
+ $stderr.puts $!.message
20
+ warn "Run `bundle install` to install missing gems."
21
+ exit 1
22
+ end
23
+
24
+ host = '127.0.0.1'
25
+ logfile = 'log/test.log'
26
+ test_glob = 'test/**/*_test.rb'
27
+
28
+ require 'fileutils'
29
+ FileUtils.mkdir_p 'log'
30
+
31
+ # find available port
32
+ require 'socket'
33
+ port = begin
34
+ server = TCPServer.new(host, 0)
35
+ server.addr[1]
36
+ ensure
37
+ server.close if server
38
+ end
39
+
40
+ server = nil
41
+
42
+ # start test server in a separate thread
43
+ thread = Thread.new do
44
+ old_verbose, $VERBOSE = $VERBOSE, nil
45
+ begin
46
+ require File.expand_path('../../test/live_server', __FILE__)
47
+ ensure
48
+ $VERBOSE = old_verbose
49
+ end
50
+ require 'webrick'
51
+ log_io = File.open logfile, 'w'
52
+ webrick_opts = {
53
+ :Port => port, :Logger => WEBrick::Log::new(log_io),
54
+ :AccessLog => [[log_io, "[%{X-Faraday-Adapter}i] %m %U -> %s %b"]]
55
+ }
56
+ Rack::Handler::WEBrick.run(Faraday::LiveServer, webrick_opts) {|serv| server = serv }
57
+ end
58
+
59
+ # find files to test
60
+ test_files = Dir[test_glob]
61
+ if ARGV.any?
62
+ all_files, test_files = test_files, []
63
+ args, extra_args = ARGV, []
64
+ if idx = args.index('--')
65
+ extra_args = args[(idx+1)..-1]
66
+ args = args[0, idx]
67
+ end
68
+ for arg in args
69
+ re = /(\b|_)#{arg}(\b|_)/
70
+ test_files.concat all_files.select { |f| f =~ re }
71
+ end
72
+ test_files.concat extra_args
73
+ end
74
+
75
+ require 'net/http'
76
+ conn = Net::HTTP.new host, port
77
+ conn.open_timeout = conn.read_timeout = 0.05
78
+
79
+ # test if test server is accepting requests
80
+ responsive = lambda { |path|
81
+ begin
82
+ res = conn.start { conn.get(path) }
83
+ res.is_a?(Net::HTTPSuccess)
84
+ rescue Errno::ECONNREFUSED, Errno::EBADF, Timeout::Error
85
+ false
86
+ end
87
+ }
88
+
89
+ require 'timeout'
90
+ Timeout.timeout 40 do
91
+ # block until test server is ready
92
+ thread.join 0.05 until responsive.call('/echo')
93
+ end
94
+
95
+ ENV['LIVE'] = "http://#{host}:#{port}"
96
+ system 'ruby', '-Ilib:test', '-S', 'testrb', *test_files
97
+
98
+ server.respond_to?(:stop!) ? server.stop! : server.stop
99
+ thread.join
@@ -5,19 +5,6 @@ module Adapters
5
5
 
6
6
  def adapter() :excon end
7
7
 
8
- # https://github.com/geemus/excon/issues/98
9
- if defined?(RUBY_ENGINE) and "rbx" == RUBY_ENGINE
10
- warn "Warning: Skipping Excon tests on Rubinius"
11
- else
12
- Integration.apply(self, :NonParallel) do
13
- # https://github.com/eventmachine/eventmachine/pull/289
14
- undef :test_timeout
15
-
16
- # FIXME: this test fails on Travis with
17
- # "Faraday::Error::ClientError: the server responded with status 400"
18
- undef :test_POST_sends_files if ENV['CI']
19
- end
20
- end
21
-
8
+ Integration.apply(self, :NonParallel)
22
9
  end
23
10
  end
@@ -8,7 +8,7 @@ module Adapters
8
8
  # `#adapter_options` optional. extra arguments for building an adapter
9
9
  module Integration
10
10
  def self.apply(base, *extras)
11
- if Faraday::TestCase::LIVE_SERVER
11
+ if base.live_server?
12
12
  ([:Common] + extras).each {|name| base.send(:include, self.const_get(name)) }
13
13
  yield if block_given?
14
14
  elsif !defined? @warned
@@ -179,7 +179,10 @@ module Adapters
179
179
  end
180
180
  end
181
181
 
182
- Faraday::Connection.new(Faraday::TestCase::LIVE_SERVER, options, &builder_block).tap do |conn|
182
+ server = self.class.live_server
183
+ url = 'http://%s:%d' % [server.host, server.port]
184
+
185
+ Faraday::Connection.new(url, options, &builder_block).tap do |conn|
183
186
  conn.headers['X-Faraday-Adapter'] = adapter.to_s
184
187
  adapter_handler = conn.builder.handlers.last
185
188
  conn.builder.insert_before adapter_handler, Faraday::Response::RaiseError
@@ -5,7 +5,10 @@ module Adapters
5
5
 
6
6
  def adapter() :net_http_persistent end
7
7
 
8
- Integration.apply(self, :NonParallel)
8
+ Integration.apply(self, :NonParallel) do
9
+ # https://github.com/drbrain/net-http-persistent/issues/33
10
+ undef :test_timeout
11
+ end
9
12
 
10
13
  end
11
14
  end
@@ -10,35 +10,6 @@ module Adapters
10
10
 
11
11
  Integration.apply(self, *behaviors)
12
12
 
13
- def test_connection_errors_get_wrapped
14
- connection = Faraday.new('http://disney.com') do |b|
15
- b.adapter :net_http
16
- end
17
-
18
- exceptions = [
19
- EOFError,
20
- Errno::ECONNABORTED,
21
- Errno::ECONNREFUSED,
22
- Errno::ECONNRESET,
23
- Errno::EINVAL,
24
- Net::HTTPBadResponse,
25
- Net::HTTPHeaderSyntaxError,
26
- Net::ProtocolError,
27
- SocketError
28
- ]
29
-
30
- exceptions << OpenSSL::SSL::SSLError if defined?(OpenSSL)
31
-
32
- exceptions.each do |exception_class|
33
- stub_request(:get, 'disney.com/hello').to_raise(exception_class)
34
-
35
- assert_raise(Faraday::Error::ConnectionFailed,
36
- "Failed to wrap #{exception_class} exceptions") do
37
- connection.get('/hello')
38
- end
39
- end
40
- end
41
-
42
13
  def test_configure_ssl
43
14
  http = Net::HTTP.new 'disney.com', 443
44
15
  # this should not raise an error
@@ -7,7 +7,7 @@ module Adapters
7
7
  def adapter() :rack end
8
8
 
9
9
  def adapter_options
10
- [FaradayTestServer]
10
+ [Faraday::LiveServer]
11
11
  end
12
12
 
13
13
  # no Integration.apply because this doesn't require a server as a separate process
@@ -9,7 +9,6 @@ unless ENV['CI']
9
9
  end
10
10
 
11
11
  require 'test/unit'
12
- require 'stringio'
13
12
 
14
13
  if ENV['LEFTRIGHT']
15
14
  begin
@@ -29,14 +28,34 @@ else
29
28
  Debugger.start
30
29
  end
31
30
 
31
+ require 'stringio'
32
+ require 'uri'
33
+
32
34
  module Faraday
33
- class TestCase < Test::Unit::TestCase
34
- LIVE_SERVER = case ENV['LIVE']
35
- when /^http/ then ENV['LIVE']
36
- when nil then nil
37
- else 'http://127.0.0.1:4567'
35
+ module LiveServerConfig
36
+ def live_server=(value)
37
+ @@live_server = case value
38
+ when /^http/
39
+ URI(value)
40
+ when /./
41
+ URI('http://127.0.0.1:4567')
42
+ end
43
+ end
44
+
45
+ def live_server?
46
+ defined? @@live_server
38
47
  end
39
48
 
49
+ # Returns an object that responds to `host` and `port`.
50
+ def live_server
51
+ live_server? and @@live_server
52
+ end
53
+ end
54
+
55
+ class TestCase < Test::Unit::TestCase
56
+ extend LiveServerConfig
57
+ self.live_server = ENV['LIVE']
58
+
40
59
  def test_default
41
60
  assert true
42
61
  end unless defined? ::MiniTest
@@ -52,6 +71,3 @@ module Faraday
52
71
  end
53
72
  end
54
73
  end
55
-
56
- require 'webmock/test_unit'
57
- WebMock.disable_net_connect!(:allow => Faraday::TestCase::LIVE_SERVER)
@@ -1,8 +1,10 @@
1
1
  require 'sinatra/base'
2
2
 
3
- class FaradayTestServer < Sinatra::Base
4
- set :logging => false,
5
- :show_exceptions => false
3
+ module Faraday
4
+ class LiveServer < Sinatra::Base
5
+ set :environment, :test
6
+ disable :logging
7
+ disable :protection
6
8
 
7
9
  [:get, :post, :put, :patch, :delete, :options].each do |method|
8
10
  send(method, '/echo') do
@@ -44,7 +46,8 @@ class FaradayTestServer < Sinatra::Base
44
46
  "#{e.class}\n#{e.to_s}\n#{e.backtrace.join("\n")}"
45
47
  end
46
48
  end
49
+ end
47
50
 
48
51
  if $0 == __FILE__
49
- FaradayTestServer.run!
52
+ Faraday::LiveServer.run!
50
53
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-29 00:00:00.000000000 Z
12
+ date: 2012-08-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multipart-post
@@ -75,22 +75,6 @@ dependencies:
75
75
  - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
- - !ruby/object:Gem::Dependency
79
- name: webmock
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ! '>='
84
- - !ruby/object:Gem::Version
85
- version: '0'
86
- type: :development
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
94
78
  description:
95
79
  email: technoweenie@gmail.com
96
80
  executables: []
@@ -131,6 +115,7 @@ files:
131
115
  - lib/faraday/response/raise_error.rb
132
116
  - lib/faraday/upload_io.rb
133
117
  - lib/faraday/utils.rb
118
+ - script/test
134
119
  - test/adapters/default_test.rb
135
120
  - test/adapters/em_http_test.rb
136
121
  - test/adapters/em_synchrony_test.rb
@@ -172,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
172
157
  version: 1.3.5
173
158
  requirements: []
174
159
  rubyforge_project:
175
- rubygems_version: 1.8.24
160
+ rubygems_version: 1.8.23
176
161
  signing_key:
177
162
  specification_version: 2
178
163
  summary: HTTP/REST API client library.
@@ -198,4 +183,3 @@ test_files:
198
183
  - test/middleware_stack_test.rb
199
184
  - test/request_middleware_test.rb
200
185
  - test/response_middleware_test.rb
201
- has_rdoc: