README.md in vcr-1.6.0 vs README.md in vcr-1.7.0
- old
+ new
@@ -1,6 +1,6 @@
-# VCR
+# VCR [![Build Status](http://travis-ci.org/myronmarston/vcr.png)](http://travis-ci.org/myronmarston/vcr)
Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests.
## Synopsis
@@ -28,40 +28,84 @@
maintenance) and accurate (the response from example.com will contain the same headers and body you get from a real request).
## Features
* Automatically records and replays your HTTP interactions with minimal setup/configuration code.
-* Supports multiple HTTP stubbing libraries. Currently FakeWeb, WebMock, Typhoeus and Faraday
- are supported.
+* Supports and works with the HTTP stubbing facilities of multiple libraries. Currently, the
+ following are supported:
+ * FakeWeb
+ * WebMock
+ * Typhoeus
+ * Faraday
* Supports multiple HTTP libraries:
- * [Patron](http://github.com/toland/patron) (WebMock)
- * [Curb](http://github.com/taf2/curb) (WebMock -- only supports Curb::Easy at the moment)
- * [HTTPClient](http://github.com/nahi/httpclient) (WebMock)
- * [em-http-request](http://github.com/igrigorik/em-http-request) (WebMock)
- * [Net::HTTP](http://www.ruby-doc.org/stdlib/libdoc/net/http/rdoc/index.html) (FakeWeb and WebMock)
+ * [Patron](http://github.com/toland/patron) (when using WebMock)
+ * [Curb](http://github.com/taf2/curb) (when using WebMock -- only supports Curb::Easy at the moment)
+ * [HTTPClient](http://github.com/nahi/httpclient) (when using WebMock)
+ * [em-http-request](http://github.com/igrigorik/em-http-request) (when using WebMock)
+ * [Net::HTTP](http://www.ruby-doc.org/stdlib/libdoc/net/http/rdoc/index.html) (when using FakeWeb and WebMock)
* [Typhoeus](https://github.com/pauldix/typhoeus) (Typhoeus::Hydra, but not Typhoeus::Easy or Typhoeus::Multi)
+ * [Faraday](https://github.com/technoweenie/faraday)
* And of course any library built on Net::HTTP, such as [Mechanize](http://github.com/tenderlove/mechanize),
[HTTParty](http://github.com/jnunemaker/httparty) or [Rest Client](http://github.com/archiloque/rest-client).
* Request matching is configurable based on HTTP method, URI, host, path, body and headers.
* The same request can receive different responses in different tests--just use different cassettes.
* The recorded requests and responses are stored on disk as YAML and can easily be inspected and edited.
* Dynamic responses are supported using ERB.
* Automatically re-records cassettes on a configurable regular interval to keep them fresh and current.
* Disables all HTTP requests that you don't explicitly allow.
* Simple cucumber integration is provided using tags.
+* Includes convenient RSpec macro.
* Known to work well with many popular ruby libraries including RSpec 1 & 2, Cucumber, Test::Unit,
Capybara, Mechanize, Rest-Client and HTTParty.
* Extensively tested on 7 different ruby interpretters.
* Includes Rack and Faraday middleware.
## Usage
-Browse the [cucumber features](http://relishapp.com/myronmarston/vcr) or visit
-the [wiki](http://github.com/myronmarston/vcr/wiki) for usage info and
-documentation.
+Browse the [documentation](http://relishapp.com/myronmarston/vcr) for usage info.
The [VCR talk given at Philly.rb](http://philly-rb-vcr-talk.heroku.com/) also
contains good usage info.
+
+## Release Policy
+
+VCR follows the principles of [semantic versioning](http://semver.org/).
+The [cucumber features](http://relishapp.com/myronmarston/vcr) define
+VCR's public API. Patch level releases contain only bug fixes. Minor
+releases contain backward-compatible new features. Major new releases
+contain backwards-incompatible changes to the public API.
+
+## Ruby Interpreter Compatibility
+
+VCR has been tested on the following ruby interpreters:
+
+* MRI 1.8.6
+* MRI 1.8.7
+* MRI 1.9.1
+* MRI 1.9.2
+* REE 1.8.7
+* JRuby 1.5.6
+* Rubinius 1.2.1
+
+## Known Issues
+
+* VCR uses YAML to serialize the HTTP interactions to disk in a
+ human-readable, human-editable format. Unfortunately there are bugs
+ in Syck, Ruby's default YAML engine, that cause it to modify strings
+ when serializing them. It appears the the bug is limited to entire
+ lines of whitespace. A string such as `"1\n \n2"` will get changed
+ to `"1\n\n2"` (see [this gist](https://gist.github.com/815754) for
+ example code). In practice, this usually isn't so bad, but it can
+ occassionally cause problems, especially when the recorded
+ response includes a `content_length` header and you are using an
+ HTTP client that relies on this. Mechanize will raise an `EOFError`
+ when the `content_length` header does not match the response body
+ length. One solution is to use Psych, the new YAML engine included
+ in Ruby 1.9. VCR attempts to use Psych if possible, but you may have
+ to [re-compile ruby 1.9](http://rhnh.net/2011/01/31/psych-yaml-in-ruby-1-9-2-with-rvm-and-snow-leopard-osx)
+ to use it. See [this issue](https://github.com/myronmarston/vcr/issues#issue/43)
+ for more info. You can also use the `:update_content_length_header`
+ cassette option to ensure the header has the correct value.
## Development
* Source hosted on [GitHub](http://github.com/myronmarston/vcr).
* Direct questions and discussions to the [mailing list](http://groups.google.com/group/vcr-ruby).