| # 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 contextlib |
| import io |
| import os |
| import sys |
| |
| import pytest |
| |
| import pylint.lint |
| |
| |
| def is_module(filename): |
| return filename.endswith(".py") |
| |
| |
| def is_package(filename, location): |
| return os.path.exists(os.path.join(location, filename, "__init__.py")) |
| |
| |
| @contextlib.contextmanager |
| def _patch_stdout(out): |
| sys.stdout = out |
| try: |
| yield |
| finally: |
| sys.stdout = sys.__stdout__ |
| |
| |
| LIB_DIRS = [os.path.dirname(os.__file__)] |
| MODULES_TO_CHECK = [ |
| (location, module) |
| for location in LIB_DIRS |
| for module in os.listdir(location) |
| if is_module(module) or is_package(module, location) |
| ] |
| MODULES_NAMES = [m[1] for m in MODULES_TO_CHECK] |
| |
| |
| @pytest.mark.acceptance |
| @pytest.mark.parametrize( |
| ("test_module_location", "test_module_name"), MODULES_TO_CHECK, ids=MODULES_NAMES |
| ) |
| def test_libmodule(test_module_location, test_module_name): |
| os.chdir(test_module_location) |
| with _patch_stdout(io.StringIO()): |
| try: |
| pylint.lint.Run([test_module_name, "--enable=all", "--ignore=test"]) |
| except SystemExit as ex: |
| assert ex.code != 32 |
| return |
| |
| assert False, "shouldn't get there" |