mirror of
https://fuchsia.googlesource.com/third_party/github.com/pylint-dev/pylint
synced 2024-09-21 07:58:04 +00:00
55 lines
1.3 KiB
Python
55 lines
1.3 KiB
Python
# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
# For details: https://github.com/PyCQA/pylint/blob/master/COPYING
|
|
|
|
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"
|