diff --git a/vcr/persist.py b/vcr/persist.py index 1f270d8..8c00b32 100644 --- a/vcr/persist.py +++ b/vcr/persist.py @@ -1,9 +1,31 @@ +import tempfile + from .persisters.filesystem import FilesystemPersister +from . import migration + + +def _check_for_old_cassette(cassette_content): + # crate tmp with cassete content and try to migrate it + with tempfile.NamedTemporaryFile(mode='w+') as f: + f.write(cassette_content) + f.seek(0) + if migration.try_migrate(f.name): + raise ValueError( + "Your cassette files were generated in an older version " + "of VCR. Delete your cassettes or run the migration script." + "See http://git.io/mHhLBg for more details." + ) def load_cassette(cassette_path, serializer): with open(cassette_path) as f: - return serializer.deserialize(f.read()) + cassette_content = f.read() + try: + cassette = serializer.deserialize(cassette_content) + except TypeError: + _check_for_old_cassette(cassette_content) + raise + return cassette def save_cassette(cassette_path, cassette_dict, serializer):