File tree Expand file tree Collapse file tree 2 files changed +31
-1
lines changed Expand file tree Collapse file tree 2 files changed +31
-1
lines changed 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,12 @@ 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
+ warnings .warn ("\n " + "\n " .join (errors ), MypyWarning )
206
212
207
213
def reportinfo (self ):
208
214
"""Produce a heading for the test report."""
@@ -314,6 +320,10 @@ class MypyError(Exception):
314
320
"""
315
321
316
322
323
+ class MypyWarning (pytest .PytestWarning ):
324
+ """A non-failure message regarding the mypy run."""
325
+
326
+
317
327
def pytest_terminal_summary (terminalreporter , config ):
318
328
"""Report stderr and unrecognized lines from stdout."""
319
329
try :
Original file line number Diff line number Diff line change @@ -98,6 +98,26 @@ 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
+ result .assert_outcomes (passed = mypy_checks , warnings = 1 )
117
+ result .stdout .fnmatch_lines (["*MypyWarning*" ])
118
+ assert result .ret == 0
119
+
120
+
101
121
def test_mypy_ignore_missings_imports (testdir , xdist_args ):
102
122
"""
103
123
Verify that --mypy-ignore-missing-imports
You can’t perform that action at this time.
0 commit comments