summaryrefslogtreecommitdiff
path: root/tests/functional/ext/docparams/raise/missing_raises_doc_Sphinx.py
blob: 4658705cdc3e253e73b04c77f5f6011ba060afb1 (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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
"""Tests for missing-raises-doc and missing-raises-type-doc for Sphinx style docstrings"""
# pylint: disable=function-redefined, invalid-name, undefined-variable, missing-function-docstring
# pylint: disable=unused-argument, try-except-raise, import-outside-toplevel


def test_find_missing_sphinx_raises(self):  # [missing-raises-doc]
    """This is a docstring.

    :raises NameError: Never
    """
    raise RuntimeError("hi")
    raise NameError("hi")  # [unreachable]


def test_ignore_spurious_sphinx_raises(self):
    """This is a docstring.

    :raises RuntimeError: Always
    :except NameError: Never
    :raise OSError: Never
    :exception ValueError: Never
    """
    raise RuntimeError("Blah")


def test_find_all_sphinx_raises(self):
    """This is a docstring.

    :raises RuntimeError: Always
    :except NameError: Never
    :raise OSError: Never
    :exception ValueError: Never
    """
    raise RuntimeError("hi")
    raise NameError("hi")  # [unreachable]
    raise OSError(2, "abort!")  # [unreachable]
    raise ValueError("foo")  # [unreachable]


def test_find_multiple_sphinx_raises(self):
    """This is a docstring.

    :raises RuntimeError: Always
    :raises NameError, OSError, ValueError: Never
    """
    raise RuntimeError("hi")
    raise NameError("hi")  # [unreachable]


def test_finds_rethrown_sphinx_raises(self):  # [missing-raises-doc]
    """This is a docstring.

    :raises NameError: Sometimes
    """
    try:
        fake_func()
    except RuntimeError:
        raise

    raise NameError("hi")


def test_finds_rethrown_sphinx_multiple_raises(self):  # [missing-raises-doc]
    """This is a docstring.

    :raises NameError: Sometimes
    """
    try:
        fake_func()
    except (RuntimeError, ValueError):
        raise

    raise NameError("hi")


def test_ignores_caught_sphinx_raises(self):
    """This is a docstring.

    :raises NameError: Sometimes
    """
    try:
        raise RuntimeError("hi")
    except RuntimeError:
        pass

    raise NameError("hi")


def test_find_missing_sphinx_raises_infer_from_instance(self):  # [missing-raises-doc]
    """This is a docstring.

    :raises NameError: Never
    """
    my_exception = RuntimeError("hi")
    raise my_exception
    raise NameError("hi")  # [unreachable]


def test_find_missing_sphinx_raises_infer_from_function(self):  # [missing-raises-doc]
    """This is a docstring.

    :raises NameError: Never
    """

    def ex_func(val):
        return RuntimeError(val)

    raise ex_func("hi")
    raise NameError("hi")  # [unreachable]


def test_find_sphinx_attr_raises_exact_exc(self):
    """This is a sphinx docstring.

    :raises re.error: Sometimes
    """
    import re

    raise re.error("hi")


def test_find_sphinx_attr_raises_substr_exc(self):
    """This is a sphinx docstring.

    :raises re.error: Sometimes
    """
    from re import error

    raise error("hi")


def test_find_valid_missing_sphinx_attr_raises(self):  # [missing-raises-doc]
    """This is a sphinx docstring.

    :raises re.anothererror: Sometimes
    """
    from re import error

    raise error("hi")


def test_find_invalid_missing_sphinx_attr_raises(self):
    """This is a sphinx docstring.
    pylint allows this to pass since the comparison between Raises and
    raise are based on the class name, not the qualified name.

    :raises bogusmodule.error: Sometimes
    """
    from re import error

    raise error("hi")