diff options
Diffstat (limited to 'tests/lint/test_pylinter.py')
-rw-r--r-- | tests/lint/test_pylinter.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/lint/test_pylinter.py b/tests/lint/test_pylinter.py new file mode 100644 index 000000000..27fc10ebf --- /dev/null +++ b/tests/lint/test_pylinter.py @@ -0,0 +1,37 @@ +import sys +from typing import Any +from unittest.mock import patch + +from _pytest.capture import CaptureFixture +from astroid import AstroidBuildingError +from py._path.local import LocalPath # type: ignore + +from pylint.lint.pylinter import PyLinter +from pylint.utils import FileState + +if sys.version_info >= (3, 6, 2): + from typing import NoReturn +else: + from typing_extensions import NoReturn + + +def raise_exception(*args: Any, **kwargs: Any) -> NoReturn: + raise AstroidBuildingError(modname="spam") + + +@patch.object(FileState, "iter_spurious_suppression_messages", raise_exception) +def test_crash_in_file( + linter: PyLinter, capsys: CaptureFixture, tmpdir: LocalPath +) -> None: + args = linter.load_command_line_configuration([__file__]) + linter.crash_file_path = str(tmpdir / "pylint-crash-%Y") + linter.check(args) + out, err = capsys.readouterr() + assert not out + assert not err + files = tmpdir.listdir() + assert len(files) == 1 + assert "pylint-crash-20" in str(files[0]) + with open(files[0], encoding="utf8") as f: + content = f.read() + assert "Failed to import module spam." in content |