From d0591ba2a097312c41d544e4269eda5b809c47a0 Mon Sep 17 00:00:00 2001 From: DudeNr33 <3929834+DudeNr33@users.noreply.github.com> Date: Fri, 9 Apr 2021 21:13:14 +0200 Subject: Enable loading of plugins in functional tests (Fix 4331) (#4332) * Load plugins if defined in option file of functional test. * Fix functional test which now fails after optional plugins are now loaded correctly * Added functional test for bad_builtins from #4291 --- pylint/testutils/lint_module_test.py | 6 ++++++ tests/functional/b/bad_builtins.py | 3 +++ tests/functional/b/bad_builtins.rc | 5 +++++ tests/functional/b/bad_builtins.txt | 4 ++++ tests/functional/f/fixture_docparams_missing.py | 4 ++-- tests/functional/f/fixture_docparams_missing.txt | 4 ++++ 6 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 tests/functional/b/bad_builtins.py create mode 100644 tests/functional/b/bad_builtins.rc create mode 100644 tests/functional/b/bad_builtins.txt create mode 100644 tests/functional/f/fixture_docparams_missing.txt diff --git a/pylint/testutils/lint_module_test.py b/pylint/testutils/lint_module_test.py index 158e4f6a5..500513ce3 100644 --- a/pylint/testutils/lint_module_test.py +++ b/pylint/testutils/lint_module_test.py @@ -22,6 +22,7 @@ from pylint.testutils.functional_test_file import ( ) from pylint.testutils.output_line import OutputLine from pylint.testutils.reporter_for_tests import FunctionalTestReporter +from pylint.utils import utils class LintModuleTest: @@ -38,6 +39,11 @@ class LintModuleTest: self._linter.disable("useless-suppression") try: self._linter.read_config_file(test_file.option_file) + if self._linter.cfgfile_parser.has_option("MASTER", "load-plugins"): + plugins = utils._splitstrip( + self._linter.cfgfile_parser.get("MASTER", "load-plugins") + ) + self._linter.load_plugin_modules(plugins) self._linter.load_config_file() except NoFileError: pass diff --git a/tests/functional/b/bad_builtins.py b/tests/functional/b/bad_builtins.py new file mode 100644 index 000000000..9737e0ffc --- /dev/null +++ b/tests/functional/b/bad_builtins.py @@ -0,0 +1,3 @@ +# pylint: disable=missing-docstring +input("Yes or no ? (Y=1, n=0)") # [bad-builtin] +print(map(str, filter(1, [1, 2, 3]))) # [bad-builtin, bad-builtin, bad-builtin] diff --git a/tests/functional/b/bad_builtins.rc b/tests/functional/b/bad_builtins.rc new file mode 100644 index 000000000..e32b9f32c --- /dev/null +++ b/tests/functional/b/bad_builtins.rc @@ -0,0 +1,5 @@ +[MASTER] +load-plugins = pylint.extensions.bad_builtin + +[pylint.DEPRECATED_BUILTINS] +bad-functions=map,input,filter,print diff --git a/tests/functional/b/bad_builtins.txt b/tests/functional/b/bad_builtins.txt new file mode 100644 index 000000000..093b1d1e5 --- /dev/null +++ b/tests/functional/b/bad_builtins.txt @@ -0,0 +1,4 @@ +bad-builtin:2:0::Used builtin function 'input' +bad-builtin:3:15::Used builtin function 'filter'. Using a list comprehension can be clearer. +bad-builtin:3:6::Used builtin function 'map'. Using a list comprehension can be clearer. +bad-builtin:3:0::Used builtin function 'print' diff --git a/tests/functional/f/fixture_docparams_missing.py b/tests/functional/f/fixture_docparams_missing.py index 50a688b20..b879afcfb 100644 --- a/tests/functional/f/fixture_docparams_missing.py +++ b/tests/functional/f/fixture_docparams_missing.py @@ -1,11 +1,11 @@ """Fixture for testing missing documentation in docparams.""" -def _private_func(param1): +def _private_func(param1): # [missing-return-doc, missing-return-type-doc] if param1: raise Exception('Example') return param1 -def _private_func2(param1): +def _private_func2(param1): # [missing-yield-doc, missing-yield-type-doc] yield param1 diff --git a/tests/functional/f/fixture_docparams_missing.txt b/tests/functional/f/fixture_docparams_missing.txt new file mode 100644 index 000000000..5eb327895 --- /dev/null +++ b/tests/functional/f/fixture_docparams_missing.txt @@ -0,0 +1,4 @@ +missing-return-doc:4:0:_private_func:Missing return documentation +missing-return-type-doc:4:0:_private_func:Missing return type documentation +missing-yield-doc:10:0:_private_func2:Missing yield documentation +missing-yield-type-doc:10:0:_private_func2:Missing yield type documentation -- cgit v1.2.1