| # 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 re |
| from pathlib import Path |
| |
| import pytest |
| |
| from pylint.lint.expand_modules import _is_in_ignore_list_re, expand_modules |
| |
| |
| def test__is_in_ignore_list_re_match() -> None: |
| patterns = [ |
| re.compile(".*enchilada.*"), |
| re.compile("unittest_.*"), |
| re.compile(".*tests/.*"), |
| ] |
| assert _is_in_ignore_list_re("unittest_utils.py", patterns) |
| assert _is_in_ignore_list_re("cheese_enchiladas.xml", patterns) |
| assert _is_in_ignore_list_re("src/tests/whatever.xml", patterns) |
| |
| |
| def test__is_in_ignore_list_re_nomatch() -> None: |
| patterns = [ |
| re.compile(".*enchilada.*"), |
| re.compile("unittest_.*"), |
| re.compile(".*tests/.*"), |
| ] |
| assert not _is_in_ignore_list_re("test_utils.py", patterns) |
| assert not _is_in_ignore_list_re("enchilad.py", patterns) |
| assert not _is_in_ignore_list_re("src/tests.py", patterns) |
| |
| |
| TEST_DIRECTORY = Path(__file__).parent.parent |
| INIT_PATH = str(TEST_DIRECTORY / "lint/__init__.py") |
| EXPAND_MODULES = str(TEST_DIRECTORY / "lint/unittest_expand_modules.py") |
| this_file = { |
| "basename": "lint.unittest_expand_modules", |
| "basepath": EXPAND_MODULES, |
| "isarg": True, |
| "name": "lint.unittest_expand_modules", |
| "path": EXPAND_MODULES, |
| } |
| |
| this_file_from_init = { |
| "basename": "lint", |
| "basepath": INIT_PATH, |
| "isarg": False, |
| "name": "lint.unittest_expand_modules", |
| "path": EXPAND_MODULES, |
| } |
| |
| unittest_lint = { |
| "basename": "lint", |
| "basepath": INIT_PATH, |
| "isarg": False, |
| "name": "lint.unittest_lint", |
| "path": str(TEST_DIRECTORY / "lint/unittest_lint.py"), |
| } |
| |
| test_utils = { |
| "basename": "lint", |
| "basepath": INIT_PATH, |
| "isarg": False, |
| "name": "lint.test_utils", |
| "path": str(TEST_DIRECTORY / "lint/test_utils.py"), |
| } |
| |
| test_pylinter = { |
| "basename": "lint", |
| "basepath": INIT_PATH, |
| "isarg": False, |
| "name": "lint.test_pylinter", |
| "path": str(TEST_DIRECTORY / "lint/test_pylinter.py"), |
| } |
| |
| init_of_package = { |
| "basename": "lint", |
| "basepath": INIT_PATH, |
| "isarg": True, |
| "name": "lint", |
| "path": INIT_PATH, |
| } |
| |
| |
| @pytest.mark.parametrize( |
| "files_or_modules,expected", |
| [ |
| ([__file__], [this_file]), |
| ( |
| [Path(__file__).parent], |
| [ |
| init_of_package, |
| test_pylinter, |
| test_utils, |
| this_file_from_init, |
| unittest_lint, |
| ], |
| ), |
| ], |
| ) |
| def test_expand_modules(files_or_modules, expected): |
| ignore_list, ignore_list_re, ignore_list_paths_re = [], [], [] |
| modules, errors = expand_modules( |
| files_or_modules, ignore_list, ignore_list_re, ignore_list_paths_re |
| ) |
| modules.sort(key=lambda d: d["name"]) |
| assert modules == expected |
| assert not errors |