From 5162d183e5a6f7517c38b5dda91a7ee664bab284 Mon Sep 17 00:00:00 2001 From: Nithin Reddy Date: Thu, 20 Nov 2014 19:07:21 -0800 Subject: [PATCH] Fixes #123. When attempting to replay the same request twice using record_mode="new_episodes", vcr.py raises UnhandledHTTPRequestError. --- tests/integration/test_record_mode.py | 15 +++++++++++++++ vcr/cassette.py | 5 +++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/tests/integration/test_record_mode.py b/tests/integration/test_record_mode.py index 0e007b3..f658adf 100644 --- a/tests/integration/test_record_mode.py +++ b/tests/integration/test_record_mode.py @@ -72,6 +72,21 @@ def test_new_episodes_record_mode(tmpdir): assert len(cass.responses) == 2 +def test_new_episodes_record_mode_two_times(tmpdir): + testfile = str(tmpdir.join('recordmode.yml')) + with vcr.use_cassette(testfile, record_mode="new_episodes"): + # cassette file doesn't exist, so create. + response1 = urlopen('http://httpbin.org/').read() + + with vcr.use_cassette(testfile, record_mode="new_episodes") as cass: + # make the same request again + response = urlopen('http://httpbin.org/').read() + + # in the "new_episodes" record mode, we can add the same request + # to the cassette without repercussions + response = urlopen('http://httpbin.org/').read() + + def test_all_record_mode(tmpdir): testfile = str(tmpdir.join('recordmode.yml')) diff --git a/vcr/cassette.py b/vcr/cassette.py index 099253f..7a8a4dd 100644 --- a/vcr/cassette.py +++ b/vcr/cassette.py @@ -219,6 +219,7 @@ class Cassette(object): def __contains__(self, request): """Return whether or not a request has been stored""" - for response in self._responses(request): - return True + for index, response in self._responses(request): + if self.play_counts[index] == 0: + return True return False