summaryrefslogtreecommitdiffstats
path: root/_test/test_deprecation.py
blob: ea86f5f12fd34d655d860eef57ddd2627908c23c (plain)
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# coding: utf-8

import sys
import pytest  # type:ignore  # NOQA

last_to_warn = (0, 17, 40)


@pytest.mark.skipif(sys.version_info < (3, 7) or sys.version_info >= (3, 9),  # type: ignore
                    reason='collections not available?')
def test_collections_deprecation() -> None:
    with pytest.warns(DeprecationWarning):
        from collections import Hashable  # type: ignore  # NOQA


class TestFunctionDeprecation:
    def test_deprecation_scan(self) -> None:
        import ruamel.yaml

        if ruamel.yaml.version_info <= last_to_warn:
            with pytest.warns(PendingDeprecationWarning):
                data = ruamel.yaml.load('a: 42')  # NOQA
        else:
            with pytest.raises(AttributeError):
                data = ruamel.yaml.load('a: 42')  # NOQA

    def test_deprecation_parse(self) -> None:
        import ruamel.yaml

        if ruamel.yaml.version_info <= last_to_warn:
            data = ruamel.yaml.parse('a: 42')  # NOQA
        else:
            with pytest.raises(AttributeError):
                data = ruamel.yaml.parse('a: 42')  # NOQA

    def test_deprecation_compose(self) -> None:
        import ruamel.yaml

        if ruamel.yaml.version_info <= last_to_warn:
            with pytest.warns(PendingDeprecationWarning):
                data = ruamel.yaml.compose('a: 42')  # NOQA
        else:
            with pytest.raises(AttributeError):
                data = ruamel.yaml.parse('a: 42')  # NOQA

    def test_deprecation_compose_all(self) -> None:
        import ruamel.yaml

        if ruamel.yaml.version_info <= last_to_warn:
            data = ruamel.yaml.compose_all('a: 42')  # NOQA
        else:
            with pytest.raises(AttributeError):
                data = ruamel.yaml.parse('a: 42')  # NOQA

    def test_deprecation_load(self) -> None:
        import ruamel.yaml

        if ruamel.yaml.version_info <= last_to_warn:
            with pytest.warns(PendingDeprecationWarning):
                data = ruamel.yaml.load('a: 42')  # NOQA
        else:
            with pytest.raises(AttributeError):
                data = ruamel.yaml.parse('a: 42')  # NOQA

    def test_deprecation_load_all(self) -> None:
        import ruamel.yaml

        if ruamel.yaml.version_info <= last_to_warn:
            data = ruamel.yaml.load_all('a: 42')  # NOQA
        else:
            with pytest.raises(AttributeError):
                data = ruamel.yaml.parse('a: 42')  # NOQA

    def test_deprecation_safe_load(self) -> None:
        import ruamel.yaml

        if ruamel.yaml.version_info <= last_to_warn:
            with pytest.warns(PendingDeprecationWarning):
                data = ruamel.yaml.safe_load('a: 42')  # NOQA
        else:
            with pytest.raises(AttributeError):
                data = ruamel.yaml.parse('a: 42')  # NOQA

    def test_deprecation_round_trip_load(self) -> None:
        import ruamel.yaml

        if ruamel.yaml.version_info <= last_to_warn:
            with pytest.warns(PendingDeprecationWarning):
                data = ruamel.yaml.round_trip_load('a: 42')  # NOQA
        else:
            with pytest.raises(AttributeError):
                data = ruamel.yaml.parse('a: 42')  # NOQA


class TestYamlTyp:
    def test_unsafe_deprecation(self) -> None:
        import ruamel.yaml

        if ruamel.yaml.version_info < (0, 18, 0):
            yaml = ruamel.yaml.YAML(typ='unsafe')
        else:
            with pytest.warns(PendingDeprecationWarning):
                #   with pytest.raises(SystemExit):
                yaml = ruamel.yaml.YAML(typ='unsafe')  # NOQA

    def test_full_load_error(self) -> None:
        import ruamel.yaml

        yaml = ruamel.yaml.YAML(typ='full', pure=True)
        with pytest.raises(ruamel.yaml.error.YAMLError):
            yaml.load('a: b')
        yaml = ruamel.yaml.YAML(typ='full')  # C scanner/loader
        with pytest.raises(ruamel.yaml.error.YAMLError):
            yaml.load('a: b')

    def test_full_rt(self) -> None:
        import os
        import io
        import ruamel.yaml

        yaml = ruamel.yaml.YAML(typ='full', pure=True)
        buf = io.BytesIO()
        yaml.dump([{'fun': os.system}], buf)
        print(buf.getvalue())
        yaml = ruamel.yaml.YAML()
        data = yaml.load(buf.getvalue())
        print(data)
        ts = data[0]['fun']
        assert 'posix.system' in str(ts.tag)