From a28af843aabbeba6b5ecd8bd658b08476f74aa4d Mon Sep 17 00:00:00 2001 From: Claudiu Popa Date: Thu, 18 Jun 2020 09:08:50 +0200 Subject: Fix a crash in parallel mode when the module's filepath is not set Close #3564 --- ChangeLog | 9 +++++++++ pylint/lint/check_parallel.py | 14 ++++++++++---- .../regression_missing_init_3564/subdirectory/file.py | 0 tests/test_self.py | 8 ++++++++ 4 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 tests/regrtest_data/regression_missing_init_3564/subdirectory/file.py diff --git a/ChangeLog b/ChangeLog index cc7d08901..0406bc0ed 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,7 @@ Pylint's ChangeLog What's New in Pylint 2.6.0? =========================== + Release date: TBA * bad-continuation and bad-whitespace have been removed, black or another formatter can help you with this better than Pylint @@ -34,6 +35,10 @@ Release date: TBA * Fix `pre-commit` config that could lead to undetected duplicate lines of code +* Fix a crash in parallel mode when the module's filepath is not set + + Close #3564 + What's New in Pylint 2.5.4? =========================== @@ -42,6 +47,10 @@ What's New in Pylint 2.5.4? Close #3690 +* Fix a crash in parallel mode when the module's filepath is not set + + Close #3564 + What's New in Pylint 2.5.3? =========================== diff --git a/pylint/lint/check_parallel.py b/pylint/lint/check_parallel.py index 4f36f7f4a..201f1c878 100644 --- a/pylint/lint/check_parallel.py +++ b/pylint/lint/check_parallel.py @@ -71,6 +71,7 @@ def _worker_check_single_file(file_item): msgs = [_get_new_args(m) for m in _worker_linter.reporter.messages] return ( _worker_linter.current_name, + filepath, _worker_linter.file_state.base_name, msgs, _worker_linter.stats, @@ -98,11 +99,16 @@ def check_parallel(linter, jobs, files, arguments=None): all_stats = [] - for module, base_name, messages, stats, msg_status in pool.imap_unordered( - _worker_check_single_file, files - ): + for ( + module, + file_path, + base_name, + messages, + stats, + msg_status, + ) in pool.imap_unordered(_worker_check_single_file, files): linter.file_state.base_name = base_name - linter.set_current_module(module) + linter.set_current_module(module, file_path) for msg in messages: msg = Message(*msg) linter.reporter.handle_message(msg) diff --git a/tests/regrtest_data/regression_missing_init_3564/subdirectory/file.py b/tests/regrtest_data/regression_missing_init_3564/subdirectory/file.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test_self.py b/tests/test_self.py index 34e5d1290..67465b2f2 100644 --- a/tests/test_self.py +++ b/tests/test_self.py @@ -791,3 +791,11 @@ class TestRunTC: [path, "--disable=all", "--enable=duplicate-code"], expected_output=expected_output, ) + + def test_regression_parallel_mode_without_filepath(self): + # Test that parallel mode properly passes filepath + # https://github.com/PyCQA/pylint/issues/3564 + path = join( + HERE, "regrtest_data", "regression_missing_init_3564", "subdirectory/" + ) + self._test_output([path, "-j2"], expected_output="No such file or directory") -- cgit v1.2.1