diff options
author | Dave Bunten <dave.bunten@cuanschutz.edu> | 2023-02-08 14:01:58 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-08 22:01:58 +0100 |
commit | 7fd499a903348955cbe120b058659f1fa6a29f1a (patch) | |
tree | ebe2a3f13ff25f2470b33be30b2c9f7d6cdf5f23 /tests | |
parent | 4fd7312952923448d1eeb32881bfe35fcda48b86 (diff) | |
download | pylint-git-7fd499a903348955cbe120b058659f1fa6a29f1a.tar.gz |
Add import-based submodule detection for preferred-modules (#8186)
Co-authored-by: Pierre Sassoulas <pierre.sassoulas@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/checkers/unittest_imports.py | 56 | ||||
-rw-r--r-- | tests/regrtest_data/preferred_module/unpreferred_submodule.py | 3 |
2 files changed, 58 insertions, 1 deletions
diff --git a/tests/checkers/unittest_imports.py b/tests/checkers/unittest_imports.py index 40aa8432a..8aa062cf4 100644 --- a/tests/checkers/unittest_imports.py +++ b/tests/checkers/unittest_imports.py @@ -123,7 +123,7 @@ class TestImportsChecker(CheckerTestCase): # test preferred-modules case with base module import Run( [ - f"{os.path.join(REGR_DATA, 'preferred_module')}", + f"{os.path.join(REGR_DATA, 'preferred_module/unpreferred_module.py')}", "-d all", "-e preferred-module", # prefer sys instead of os (for triggering test) @@ -138,6 +138,60 @@ class TestImportsChecker(CheckerTestCase): # assert there were no errors assert len(errors) == 0 + # test preferred-modules trigger case with submodules + Run( + [ + f"{os.path.join(REGR_DATA, 'preferred_module/unpreferred_submodule.py')}", + "-d all", + "-e preferred-module", + # prefer os.path instead of pathlib (for triggering test) + "--preferred-modules=os.path:pathlib", + ], + exit=False, + ) + output, errors = capsys.readouterr() + + # assert that we saw preferred-modules triggered + assert "Prefer importing 'pathlib' instead of 'os.path'" in output + # assert there were no errors + assert len(errors) == 0 + + # test preferred-modules ignore case with submodules + Run( + [ + f"{os.path.join(REGR_DATA, 'preferred_module/unpreferred_submodule.py')}", + "-d all", + "-e preferred-module", + # prefer pathlib instead of os.stat (for untriggered test) + "--preferred-modules=os.stat:pathlib", + ], + exit=False, + ) + output, errors = capsys.readouterr() + + # assert that we didn't see preferred-modules triggered + assert "Your code has been rated at 10.00/10" in output + # assert there were no errors + assert len(errors) == 0 + + # test preferred-modules base module for implemented submodule (from ... import) + Run( + [ + f"{os.path.join(REGR_DATA, 'preferred_module/unpreferred_submodule.py')}", + "-d all", + "-e preferred-module", + # prefer pathlib instead of os (for triggering test) + "--preferred-modules=os:pathlib", + ], + exit=False, + ) + output, errors = capsys.readouterr() + + # assert that we saw preferred-modules triggered with base module + assert "Prefer importing 'pathlib' instead of 'os'" in output + # assert there were no errors + assert len(errors) == 0 + @staticmethod def test_allow_reexport_package(capsys: CaptureFixture[str]) -> None: """Test --allow-reexport-from-package option.""" diff --git a/tests/regrtest_data/preferred_module/unpreferred_submodule.py b/tests/regrtest_data/preferred_module/unpreferred_submodule.py new file mode 100644 index 000000000..22c61ffbe --- /dev/null +++ b/tests/regrtest_data/preferred_module/unpreferred_submodule.py @@ -0,0 +1,3 @@ +from os import path, getrandom + +path(".") |