File: test_migration.py

package info (click to toggle)
vcr.py 7.0.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,060 kB
  • sloc: python: 6,264; makefile: 188; sh: 1
file content (48 lines) | stat: -rw-r--r-- 1,568 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import filecmp
import json
import shutil

import yaml

import vcr.migration

# Use the libYAML versions if possible
try:
    from yaml import CLoader as Loader
except ImportError:
    from yaml import Loader


def test_try_migrate_with_json(tmpdir):
    cassette = tmpdir.join("cassette.json").strpath
    shutil.copy("tests/fixtures/migration/old_cassette.json", cassette)
    assert vcr.migration.try_migrate(cassette)
    with open("tests/fixtures/migration/new_cassette.json") as f:
        expected_json = json.load(f)
    with open(cassette) as f:
        actual_json = json.load(f)
    assert actual_json == expected_json


def test_try_migrate_with_yaml(tmpdir):
    cassette = tmpdir.join("cassette.yaml").strpath
    shutil.copy("tests/fixtures/migration/old_cassette.yaml", cassette)
    assert vcr.migration.try_migrate(cassette)
    with open("tests/fixtures/migration/new_cassette.yaml") as f:
        expected_yaml = yaml.load(f, Loader=Loader)
    with open(cassette) as f:
        actual_yaml = yaml.load(f, Loader=Loader)
    assert actual_yaml == expected_yaml


def test_try_migrate_with_invalid_or_new_cassettes(tmpdir):
    cassette = tmpdir.join("cassette").strpath
    files = [
        "tests/fixtures/migration/not_cassette.txt",
        "tests/fixtures/migration/new_cassette.yaml",
        "tests/fixtures/migration/new_cassette.json",
    ]
    for file_path in files:
        shutil.copy(file_path, cassette)
        assert not vcr.migration.try_migrate(cassette)
        assert filecmp.cmp(cassette, file_path)  # should not change file