summaryrefslogtreecommitdiff
path: root/tests/checkers/unittest_refactoring.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/checkers/unittest_refactoring.py')
-rw-r--r--tests/checkers/unittest_refactoring.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/checkers/unittest_refactoring.py b/tests/checkers/unittest_refactoring.py
index 3c87a8d33..accc4b067 100644
--- a/tests/checkers/unittest_refactoring.py
+++ b/tests/checkers/unittest_refactoring.py
@@ -1,9 +1,31 @@
# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
# For details: https://github.com/PyCQA/pylint/blob/main/LICENSE
+import os
+import signal
+from contextlib import contextmanager
+
import astroid
+import pytest
from pylint.checkers.refactoring import ImplicitBooleanessChecker
+from pylint.lint import Run
+from pylint.reporters.text import TextReporter
+
+PARENT_DIR = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
+REGR_DATA = os.path.join(PARENT_DIR, "regrtest_data")
+
+
+@contextmanager
+def timeout(timeout_s: float):
+ def _handle(_signum, _frame):
+ pytest.fail("Test took too long")
+
+ signal.signal(signal.SIGALRM, _handle)
+ signal.setitimer(signal.ITIMER_REAL, timeout_s)
+ yield
+ signal.setitimer(signal.ITIMER_REAL, 0)
+ signal.signal(signal.SIGALRM, signal.SIG_DFL)
def test_class_tree_detection() -> None:
@@ -46,3 +68,11 @@ class ChildClassWithoutBool(ClassWithoutBool):
"dict",
"object",
]
+
+
+@pytest.mark.skipif(not hasattr(signal, "setitimer"), reason="Assumes POSIX signals")
+def test_process_tokens() -> None:
+ with timeout(8.0):
+ with pytest.raises(SystemExit) as cm:
+ Run([os.path.join(REGR_DATA, "very_long_line.py")], reporter=TextReporter())
+ assert cm.value.code == 0