From 438025d04695c30d12c5fd822c33cde2cf5b5099 Mon Sep 17 00:00:00 2001 From: Dani Alcala <112832187+clavedeluna@users.noreply.github.com> Date: Sat, 3 Dec 2022 05:21:44 -0300 Subject: [PATCH] add test and expl for line-too-long useless-supp FP (#7887) Co-authored-by: Pierre Sassoulas (cherry picked from commit 30c931f5170f6b83d8762993fdaa534e207b4324) --- doc/data/messages/l/line-too-long/details.rst | 3 +++ doc/whatsnew/fragments/3368.false_positive | 3 +++ tests/regrtest_data/line_too_long_no_code.py | 2 ++ tests/test_self.py | 18 ++++++++++++++++++ 4 files changed, 26 insertions(+) create mode 100644 doc/data/messages/l/line-too-long/details.rst create mode 100644 doc/whatsnew/fragments/3368.false_positive create mode 100644 tests/regrtest_data/line_too_long_no_code.py diff --git a/doc/data/messages/l/line-too-long/details.rst b/doc/data/messages/l/line-too-long/details.rst new file mode 100644 index 0000000000..068a453b48 --- /dev/null +++ b/doc/data/messages/l/line-too-long/details.rst @@ -0,0 +1,3 @@ +If you attempt to disable this message via ``# pylint: disable=line-too-long`` in a module with no code, you may receive a message for ``useless-suppression``. This is a false positive of ``useless-suppression`` we can't easily fix. + +See https://github.com/PyCQA/pylint/issues/3368 for more information. diff --git a/doc/whatsnew/fragments/3368.false_positive b/doc/whatsnew/fragments/3368.false_positive new file mode 100644 index 0000000000..bdfa7de6c7 --- /dev/null +++ b/doc/whatsnew/fragments/3368.false_positive @@ -0,0 +1,3 @@ +Document a known false positive for ``useless-suppression`` when disabling ``line-too-long`` in a module with only comments and no code. + +Closes #3368 diff --git a/tests/regrtest_data/line_too_long_no_code.py b/tests/regrtest_data/line_too_long_no_code.py new file mode 100644 index 0000000000..75ab07fc2e --- /dev/null +++ b/tests/regrtest_data/line_too_long_no_code.py @@ -0,0 +1,2 @@ +# ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 # pylint: disable=line-too-long +# See https://github.com/PyCQA/pylint/issues/3368 diff --git a/tests/test_self.py b/tests/test_self.py index 010e60682e..57e9d92360 100644 --- a/tests/test_self.py +++ b/tests/test_self.py @@ -1215,6 +1215,24 @@ def test_encoding(self, module_name: str, expected_output: str) -> None: [path], expected_output=expected_output, unexpected_output="(astroid-error)" ) + def test_line_too_long_useless_suppression(self) -> None: + """A test that demonstrates a known false positive for useless-suppression + + See https://github.com/PyCQA/pylint/issues/3368 + + If you manage to make this test fail and remove the useless-suppression + warning please contact open a Pylint PR! + """ + module = join(HERE, "regrtest_data", "line_too_long_no_code.py") + expected = textwrap.dedent( + f""" + {module}:1:0: I0011: Locally disabling line-too-long (C0301) (locally-disabled) + {module}:1:0: I0021: Useless suppression of 'line-too-long' (useless-suppression) + """ + ) + + self._test_output([module, "--enable=all"], expected_output=expected) + class TestCallbackOptions: """Test for all callback options we support."""