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