Major fixes and new features
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
"""Tests for mypy incremental error output."""
|
||||
from __future__ import annotations
|
||||
|
||||
from mypy import build
|
||||
from mypy.errors import CompileError
|
||||
from mypy.modulefinder import BuildSource
|
||||
from mypy.options import Options
|
||||
from mypy.test.data import DataDrivenTestCase, DataSuite
|
||||
from mypy.test.helpers import assert_string_arrays_equal
|
||||
|
||||
|
||||
class ErrorStreamSuite(DataSuite):
|
||||
required_out_section = True
|
||||
base_path = "."
|
||||
files = ["errorstream.test"]
|
||||
|
||||
def run_case(self, testcase: DataDrivenTestCase) -> None:
|
||||
test_error_stream(testcase)
|
||||
|
||||
|
||||
def test_error_stream(testcase: DataDrivenTestCase) -> None:
|
||||
"""Perform a single error streaming test case.
|
||||
|
||||
The argument contains the description of the test case.
|
||||
"""
|
||||
options = Options()
|
||||
options.show_traceback = True
|
||||
options.hide_error_codes = True
|
||||
|
||||
logged_messages: list[str] = []
|
||||
|
||||
def flush_errors(msgs: list[str], serious: bool) -> None:
|
||||
if msgs:
|
||||
logged_messages.append("==== Errors flushed ====")
|
||||
logged_messages.extend(msgs)
|
||||
|
||||
sources = [BuildSource("main", "__main__", "\n".join(testcase.input))]
|
||||
try:
|
||||
build.build(sources=sources, options=options, flush_errors=flush_errors)
|
||||
except CompileError as e:
|
||||
assert e.messages == []
|
||||
|
||||
assert_string_arrays_equal(
|
||||
testcase.output, logged_messages, f"Invalid output ({testcase.file}, line {testcase.line})"
|
||||
)
|
||||
Reference in New Issue
Block a user