summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudiu Popa <pcmanticore@gmail.com>2020-06-18 09:08:50 +0200
committerClaudiu Popa <pcmanticore@gmail.com>2020-06-18 09:08:50 +0200
commita28af843aabbeba6b5ecd8bd658b08476f74aa4d (patch)
tree406d799ce89e41271aa1c3200af591a9aefbbd96
parent36250aa1370a1b0e496185eafed3afa145589d1a (diff)
downloadpylint-git-fix-crash-parallel-mode-missing-file-path.tar.gz
Fix a crash in parallel mode when the module's filepath is not setfix-crash-parallel-mode-missing-file-path
Close #3564
-rw-r--r--ChangeLog9
-rw-r--r--pylint/lint/check_parallel.py14
-rw-r--r--tests/regrtest_data/regression_missing_init_3564/subdirectory/file.py0
-rw-r--r--tests/test_self.py8
4 files changed, 27 insertions, 4 deletions
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
--- /dev/null
+++ b/tests/regrtest_data/regression_missing_init_3564/subdirectory/file.py
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")