include the file path in the plugin execution error

This commit is contained in:
Anthony Sottile 2022-01-23 20:40:34 -05:00
parent 9de288a22f
commit d2333c4471
4 changed files with 24 additions and 9 deletions

View file

@ -356,7 +356,9 @@ class FileChecker:
exc_info=True,
)
raise exceptions.PluginExecutionFailed(
plugin_name=plugin.display_name, exception=all_exc
filename=self.filename,
plugin_name=plugin.display_name,
exception=all_exc,
)
@staticmethod

View file

@ -54,17 +54,24 @@ class PluginRequestedUnknownParameters(Flake8Exception):
class PluginExecutionFailed(Flake8Exception):
"""The plugin failed during execution."""
FORMAT = '"%(name)s" failed during execution due to "%(exc)s"'
FORMAT = '{fname}: "{plugin}" failed during execution due to {exc!r}'
def __init__(self, plugin_name: str, exception: Exception) -> None:
def __init__(
self,
filename: str,
plugin_name: str,
exception: Exception,
) -> None:
"""Utilize keyword arguments for message generation."""
self.filename = filename
self.plugin_name = plugin_name
self.original_exception = exception
super().__init__(plugin_name, exception)
super().__init__(filename, plugin_name, exception)
def __str__(self) -> str:
"""Format our exception message."""
return self.FORMAT % {
"name": self.plugin_name,
"exc": self.original_exception,
}
return self.FORMAT.format(
fname=self.filename,
plugin=self.plugin_name,
exc=self.original_exception,
)

View file

@ -18,6 +18,7 @@ from flake8 import exceptions
exception=ValueError("boom!"),
),
exceptions.PluginExecutionFailed(
filename="filename.py",
plugin_name="plugin_name",
exception=ValueError("boom!"),
),

View file

@ -54,5 +54,10 @@ def test_raises_exception_on_failed_plugin(tmp_path, default_options):
plugins=finder.Checkers([], [], []),
options=default_options,
)
with pytest.raises(flake8.exceptions.PluginExecutionFailed):
with pytest.raises(flake8.exceptions.PluginExecutionFailed) as excinfo:
fchecker.run_check(plugin)
expected = (
f'{fname}: "plugin-name[X]" failed during execution '
f"due to ValueError()"
)
assert str(excinfo.value) == expected