summaryrefslogtreecommitdiff
path: root/tests/functional/ext/docparams/raise/missing_raises_doc_Google.py
blob: 22dbcadaa388c9307556cb74f068f2204b5c164c (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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
"""Tests for missing-raises-doc and missing-raises-type-doc for Google style docstrings"""
# pylint: disable=function-redefined, invalid-name, undefined-variable, missing-function-docstring
# pylint: disable=unused-argument, import-outside-toplevel, import-error, try-except-raise, too-few-public-methods


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

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


def test_find_google_attr_raises_exact_exc(self):
    """This is a google docstring.

    Raises:
        re.error: Sometimes
    """
    import re

    raise re.error("hi")


def test_find_google_attr_raises_substr_exc(self):
    """This is a google docstring.

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

    raise error("hi")


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

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

    raise error("hi")


def test_find_invalid_missing_google_attr_raises(self):
    """This is a google 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")


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

    Raises:
        .LocalException: Always
    """
    from neighbor_module import LocalException

    raise LocalException("hi")


def test_find_all_google_raises(self):
    """This is a Google docstring.

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


def test_find_multiple_google_raises(self):
    """This is a Google docstring.

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


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

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

    raise NameError("hi")


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

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

    raise NameError("hi")


def test_ignores_caught_google_raises(self):
    """This is a Google docstring.

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

    raise NameError("hi")


class Foo:
    """test_finds_missing_raises_from_setter_google
    Example of a setter having missing raises documentation in
    the Google style docstring of the property
    """

    @property
    def foo_method(self):  # [missing-raises-doc]
        """int: docstring

        Include a "Raises" section so that this is identified
        as a Google docstring and not a Numpy docstring.

        Raises:
            RuntimeError: Always
        """
        raise RuntimeError()
        return 10  # [unreachable]

    @foo_method.setter
    def foo_method(self, value):
        print(self)
        raise AttributeError()


class Foo:
    """test_finds_missing_raises_from_setter_google_2
    Example of a setter having missing raises documentation in
    its own Google style docstring of the property.
    """

    @property
    def foo_method(self):
        """int: docstring ...

        Raises:
            RuntimeError: Always
        """
        raise RuntimeError()
        return 10  # [unreachable]

    @foo_method.setter
    def foo_method(self, value):  # [missing-raises-doc]
        """setter docstring ...

        Raises:
            RuntimeError: Never
        """
        print(self)
        if True:  # [using-constant-test]
            raise AttributeError()
        raise RuntimeError()