File tree 3 files changed +42
-1
lines changed
3 files changed +42
-1
lines changed Original file line number Diff line number Diff line change 1
1
# Changelog
2
2
3
+ ## [ 0.10.3] ( https://github.com/dbader/pytest-mypy/milestone/21 )
4
+ * Stop failing if mypy only produces notes.
5
+
3
6
## [ 0.10.2] ( https://github.com/dbader/pytest-mypy/milestone/20 )
4
7
* Update and loosen [ build-system] requirements.
5
8
Original file line number Diff line number Diff line change 5
5
from pathlib import Path
6
6
from tempfile import NamedTemporaryFile
7
7
from typing import Dict , List , Optional , TextIO
8
+ import warnings
8
9
9
10
import attr
10
11
from filelock import FileLock # type: ignore
@@ -202,7 +203,13 @@ def runtest(self):
202
203
abspath = os .path .abspath (str (self .fspath ))
203
204
errors = results .abspath_errors .get (abspath )
204
205
if errors :
205
- raise MypyError (file_error_formatter (self , results , errors ))
206
+ if not all (
207
+ error .partition (":" )[2 ].partition (":" )[0 ].strip () == "note"
208
+ for error in errors
209
+ ):
210
+ raise MypyError (file_error_formatter (self , results , errors ))
211
+ # This line cannot be easily covered on mypy < 0.990:
212
+ warnings .warn ("\n " + "\n " .join (errors ), MypyWarning ) # pragma: no cover
206
213
207
214
def reportinfo (self ):
208
215
"""Produce a heading for the test report."""
@@ -314,6 +321,10 @@ class MypyError(Exception):
314
321
"""
315
322
316
323
324
+ class MypyWarning (pytest .PytestWarning ):
325
+ """A non-failure message regarding the mypy run."""
326
+
327
+
317
328
def pytest_terminal_summary (terminalreporter , config ):
318
329
"""Report stderr and unrecognized lines from stdout."""
319
330
try :
Original file line number Diff line number Diff line change @@ -98,6 +98,33 @@ def pyfunc(x: int) -> str:
98
98
assert result .ret != 0
99
99
100
100
101
+ def test_mypy_annotation_unchecked (testdir , xdist_args ):
102
+ """Verify that annotation-unchecked warnings do not manifest as an error."""
103
+ testdir .makepyfile (
104
+ """
105
+ def pyfunc(x):
106
+ y: int = 2
107
+ return x * y
108
+ """ ,
109
+ )
110
+ result = testdir .runpytest_subprocess (* xdist_args )
111
+ result .assert_outcomes ()
112
+ result = testdir .runpytest_subprocess ("--mypy" , * xdist_args )
113
+ mypy_file_checks = 1
114
+ mypy_status_check = 1
115
+ mypy_checks = mypy_file_checks + mypy_status_check
116
+ outcomes = {"passed" : mypy_checks }
117
+ # mypy doesn't emit annotation-unchecked warnings until 0.990:
118
+ min_mypy_version = Version ("0.990" )
119
+ if MYPY_VERSION >= min_mypy_version and PYTEST_VERSION >= Version ("7.0" ):
120
+ # assert_outcomes does not support `warnings` until 7.x.
121
+ outcomes ["warnings" ] = 1
122
+ result .assert_outcomes (** outcomes )
123
+ if MYPY_VERSION >= min_mypy_version :
124
+ result .stdout .fnmatch_lines (["*MypyWarning*" ])
125
+ assert result .ret == 0
126
+
127
+
101
128
def test_mypy_ignore_missings_imports (testdir , xdist_args ):
102
129
"""
103
130
Verify that --mypy-ignore-missing-imports
You can’t perform that action at this time.
0 commit comments