diff --git a/README.md b/README.md index f71e5c2..d60fdf0 100644 --- a/README.md +++ b/README.md @@ -259,6 +259,8 @@ This library is a work in progress, so the API might change on you. There are probably some [bugs](https://github.com/kevin1024/vcrpy/issues?labels=bug&page=1&state=open) floating around too. ##Changelog +* 0.3.3: Bugfix for error message when an unreigstered custom matcher + was used * 0.3.2: Fix issue with new config syntax and the `match_on` parameter. Thanks, @chromy! * 0.3.1: Fix issue causing full paths to be sent on the HTTP request diff --git a/setup.py b/setup.py index b696897..541f78a 100644 --- a/setup.py +++ b/setup.py @@ -19,7 +19,7 @@ class PyTest(TestCommand): sys.exit(errno) setup(name='vcrpy', - version='0.3.2', + version='0.3.3', description="A Python port of Ruby's VCR to make mocking HTTP easier", author='Kevin McCarthy', author_email='me@kevinmccarthy.org', diff --git a/tests/integration/test_config.py b/tests/integration/test_config.py index 1a4e47c..2d70968 100644 --- a/tests/integration/test_config.py +++ b/tests/integration/test_config.py @@ -1,6 +1,7 @@ import os import json import urllib2 +import pytest import vcr @@ -45,3 +46,11 @@ def test_override_match_on(tmpdir): assert len(cass) == 1 assert cass.play_count == 1 + + +def test_missing_matcher(): + my_vcr = vcr.VCR() + my_vcr.register_matcher("awesome", object) + with pytest.raises(KeyError): + with my_vcr.use_cassette("test.yaml", match_on=['notawesome']): + pass diff --git a/tests/integration/test_wild.py b/tests/integration/test_wild.py index 167219d..13f6caa 100644 --- a/tests/integration/test_wild.py +++ b/tests/integration/test_wild.py @@ -46,6 +46,7 @@ def test_flickr_multipart_upload(): _pretend_to_be_flickr_library() assert cass.play_count == 1 + def test_flickr_should_respond_with_200(tmpdir): testfile = str(tmpdir.join('flickr.yml')) with vcr.use_cassette(testfile): diff --git a/tests/unit/test_cassettes.py b/tests/unit/test_cassettes.py index 0d5de47..df2e755 100644 --- a/tests/unit/test_cassettes.py +++ b/tests/unit/test_cassettes.py @@ -50,6 +50,7 @@ def test_cassette_len(): def _mock_requests_match(request1, request2, matchers): return request1 == request2 + @mock.patch('vcr.cassette.requests_match', _mock_requests_match) def test_cassette_contains(): a = Cassette('test') diff --git a/vcr/config.py b/vcr/config.py index 76685e9..d8dd347 100644 --- a/vcr/config.py +++ b/vcr/config.py @@ -9,7 +9,7 @@ class VCR(object): serializer='yaml', cassette_library_dir=None, record_mode="once", - match_on=['url','method'], + match_on=['url', 'method'], ): self.serializer = serializer self.match_on = match_on @@ -42,10 +42,9 @@ class VCR(object): try: matchers = [self.matchers[m] for m in matcher_names] except KeyError: - print "Matcher {0} doesn't exist or isn't registered".format( - matcher_name + raise KeyError( + "Matcher {0} doesn't exist or isn't registered".format(m) ) - raise KeyError return matchers def use_cassette(self, path, **kwargs):