fakeweb (master branch pending release)

* fix a variety of NoMethodErrors when Net::HTTP#read_timeout= or
  Net::HTTP#continue_timeout= is called after a Net::HTTP object has handled a
  first fake request under newer versions of Ruby and/or some gems (Mechanize,
  aws-sdk, etc.) [Marcel Massana, Trevor Rowe, Chris Kampmeier]

* add ability to accept a StringIO as a fake response body
  [Larry Diehl, Andy Delcambre, Chris Kampmeier]

* fix an exception when an IO is passed in as a fake response body
  [Chris Kampmeier]

* stub responses with no bodies (e.g. to a HEAD request) now return nil for
  #body, not an empty string, to match Net::HTTP's behavior [Myron Marston]

* fix warnings on post-1.8 versions of Ruby [Peter Hellberg, Kenichi Kamiya]

* fix that the options hash passed to FakeWeb.register_uri would sometimes be
  modified [Chris Kampmeier]

* raise an ArgumentError when FakeWeb.register_uri's third argument can't be
  handled as an options hash [David Cornu, Josef Strzibny, Chris Kampmeier]

* raise the more-specific ArgumentError instead of StandardError when the object
  passed to FakeWeb.register_uri's :response option can't be handled; this
  should be relatively backwards-compatible because ArgumentError descends from
  StandardError [Chris Kampmeier]

* deprecation warnings now detect the caller more robustly to work with JRuby's
  backtraces [Chris Kampmeier]


fakeweb (1.3.0)

* improve response header registration so you can pass an array to set a header
  more than once [Myron Marston]

* fix an exception when the response's :body option was set to nil [Chris Zingel]

* fix that stubbed requests weren't mutating the Net::HTTP request object to set
  the body and content-length, like real requests do [Chris Kampmeier]

* add FakeWeb.last_request [Chris Kampmeier]

* assigning a String or Regexp to FakeWeb.allow_net_connect= sets a whitelist
  for outbound requests [Dan Dofter, Tim Carey-Smith, Ben Woosley]


fakeweb (1.2.8)

* support Pathname objects where a filename is expected [Chris Kampmeier]

* fix compatibility with Ruby 1.9.2 [Chris Kampmeier]

* simplify storage of FakeWeb::VERSION [Josh Peek, Woody Peterson, Ben Woosley]


fakeweb (1.2.7)

* revert to sorting query params before matching requests against regexps,
  instead of the 1.2.6 behavior that tried every possible order combination;
  that was factorial-time, which made matching hang for requests with long query
  strings [Jason Wadsworth, David Dollar, Blaine Cook]

* print a warning when FakeWeb is loaded before RightHttpConnection or after
  Samuel, other libs that patch Net::HTTP [Chris Kampmeier, Ben Brinckerhoff]


fakeweb (1.2.6)

* fix that query params in a regex would have to be sorted for it to ever match
  a request URI [Chris Kampmeier, Ben Hall]

* improve regex handling so registration with an explicit port (like
  /example.com:80/) matches a request that uses an implied port
  (like "http://example.com/") [Chris Kampmeier, Dan Dofter]

* refactor URI registry to reduce duplication; now about twice as fast at
  handling requests [Chris Kampmeier]

* Add FakeWeb::VERSION so you can programmatically determine what version of
  FakeWeb is loaded without using RubyGems [Chris Kampmeier, Chris Wanstrath]


fakeweb (1.2.5)

* fix handling of userinfo strings that contain percent-encoded unsafe
  characters [Chris Kampmeier, Ken Mayer]

* fix that exact matches against strings/URIs with the :any method had a lower
  precedence than regex matches using a real HTTP method (exact matches now
  always take precedence) [Chris Kampmeier]

* change request handling to raise an exception when more than one registered
  regex matches a request URI [Chris Kampmeier]


fakeweb (1.2.4)

* add experimental support for matching URIs via regular expressions
  [Jacqui Maher, Tiago Albineli Motta, Peter Wagene]

* fix an exception when registering with the :response option and a string that
  is the same as the name of a directory in the current path [Chris Kampmeier]

* DEPRECATION: Calling FakeWeb.register_uri with a :string or :file option is
  now deprecated. Both options have been replaced with a unified :body option,
  since they supply the response body (as opposed to :response, which supplies
  the full response including headers) [Chris Kampmeier]

* add support for specifying HTTP headers as options to FakeWeb.register_uri
  when using the :string or :file response types, since those methods only
  specify a response body [David Michael, Chris Kampmeier]

* DEPRECATION: Calling FakeWeb.register_uri and FakeWeb.registered_uri? without
  an HTTP method as the first argument is now deprecated. To match against any
  HTTP method (the pre-1.2.0 behavior), use :any [Chris Kampmeier]


fakeweb (1.2.3)

* fix the #http_version of :file and :string responses, which was returning the
  request URI instead of something sensible like "1.0" [Chris Kampmeier]

* add method aliases in the Net::HTTP patch to eliminate warnings when running
  with -w [Joshua Clingenpeel]

* fix that removing the redefinition of OpenURI::HTTPError in 1.2.0 caused
  :exception responses to raise when OpenURI isn't available [Chris Kampmeier]

* fix registering an :exception response with classes that require arguments for
  instantiation, like Interrupt's subclasses [Chris Kampmeier]


fakeweb (1.2.2)

* fix that HTTP Digest and OAuth requests could raise URI::InvalidURIErrors
  [Bill Kocik, Chris Kampmeier]


fakeweb (1.2.1)

* fix that query parameters are handled correctly when registering with a URI
  object [Anselmo Alves, Chris Kampmeier]

* fix an exception when registering with the :response option and a string
  containing "\0" [Jonathan Baudanza, Chris Kampmeier]

* fix that trailing slashes were considered significant for requests to the root
  of a domain [Chris Kampmeier]

* add support for HTTP basic authentication via userinfo strings in URIs
  [Michael Bleigh]


fakeweb (1.2.0)

* add lib/fakeweb.rb so you can require "fakeweb" as well [Chris Kampmeier]

* fix compatibility with Ruby 1.9.1 [Chris Kampmeier]

* fix that newlines in file-based responses could be doubled in the response
  object's body [Mark Menard, Chris Kampmeier]

* fix unnecessary munging of the transfer-encoding header, which improves
  compatibility with mechanize [Mark Menard]

* fix a test and the RCov dependency to be compatible with JRuby [Mark Menard]

* remove an unnecessary redefinition of OpenURI::HTTPError [Josh Nichols]

* rearrange implementation code into separate files, one per class [Josh Nichols]

* fix a bug where FakeWeb.response_for would raise if the request wasn't
  registered [Chris Kampmeier]

* add HTTP method support, so FakeWeb takes both the URI and method into
  account for registration, requests, and responses. Backwards-compatible with
  the old method signatures, which didn't have a method param. [Chris Kampmeier]

* start work on Ruby 1.9 compatibility [Chris Kampmeier]

* add FakeWeb.allow_net_connect= to enable/disable the pass-through to
  Net::HTTP for unregistered URIs [Mislav Marohnić, Chris Kampmeier]

* remove setup.rb, since most people use RubyGems [Mislav Marohnić]

* fix that 'http://example.com/?' (empty query) matches a registered
  'http://example.com/', and vice-versa [Mislav Marohnić]

* improve the test suite to not rely on an internet connection [Chris Kampmeier]

* use `rake test` instead of `rake tests` [Josh Nichols]

* fix an incompatibility with Ruby 1.8.6 p36 where you'd get "Errno::EINTR:
  Interrupted system call" exceptions in Socket#sysread for any non-faked
  request [Chris Kampmeier]

* response rotation: you can now optionally call FakeWeb.register_uri with an
  array of options hashes; these are used, in order, to respond to
  repeated requests (to repeat a response more than once before rotating, use
  the :times option). Once you run out of responses, further requests always
  receive the last response. [Michael Shapiro]

* add support for Net::HTTP's undocumented full-URI request style (fixes
  URI::InvalidURIErrors that you might see in older libraries) [Chris Kampmeier]

* sort query params before storing internally, so that
  http://example.com/?a=1&b=2 and http://example.com/?b=2&a=1 are considered the
  same URL (although this is technically incorrect, it's much more
  convenient--most web apps work that way, and Net::HTTP's use of a hash to pass
  query params means that the order in which FakeWeb stores them can be
  unpredictable) [Chris Kampmeier]

* add support for ports in URLs, so that http://example.com/ and
  http://example.com:3000/ are not the same [Chris Kampmeier]

* fix for non-faked SSL requests failing with "Unable to create local socket"
  [Chris Kampmeier]

* update Rakefile to fix warning about deprecated code [Chris Kampmeier]


fakeweb (1.1.2)

* add required dependencies to GemSpec to ensure that tests pass in firebrigade
  (http://firebrigade.seattlerb.org/) [Blaine Cook]


fakeweb (1.1.1)

* fix for non-existence of :string method on File as presented by open-uri
  [Blaine Cook]

* fix for curl example test - google redirects to ccTLDs for those outside US
  [Blaine Cook]


fakeweb (1.1.0)

* update code to correspond to ruby 1.8.4 (breaks compatibility with ruby 1.8.2)
  [Blaine Cook]


fakeweb (1.0.0)

  * initial import [Blaine Cook]
