Hello community, here is the log from the commit of package python-pylint for openSUSE:Factory checked in at 2020-06-11 14:45:11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pylint (Old) and /work/SRC/openSUSE:Factory/.python-pylint.new.3606 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pylint" Thu Jun 11 14:45:11 2020 rev:16 rq:812777 version:2.5.3 Changes: -------- --- /work/SRC/openSUSE:Factory/python-pylint/python-pylint.changes 2020-05-28 09:07:53.119800852 +0200 +++ /work/SRC/openSUSE:Factory/.python-pylint.new.3606/python-pylint.changes 2020-06-11 14:45:33.085530974 +0200 @@ -1,0 +2,23 @@ +Mon Jun 8 19:33:50 UTC 2020 - Michael Ströder <[email protected]> + +- Update to 2.5.3 + * Fix a regression where disable comments that have checker names with numbers in them are not parsed correctly + Close #3666 + * `property-with-parameters` properly handles abstract properties + Close #3600 + * `continue-in-finally` no longer emitted on Python 3.8 where it's now valid + Close #3612 + * Fix a regression where messages with dash are not fully parsed + Close #3604 + * In a TOML configuration file, it's now possible to use rich (non-string) types, such as list, integer or boolean instead of strings. For example, one can now define a *list* of message identifiers to enable like this:: + enable = [ + "use-symbolic-message-instead", + "useless-suppression", + ] + Close #3538 + * Fix a regression where the score was not reported with multiple jobs + Close #3547 + * Protect against `AttributeError` when checking `cell-var-from-loop` + Close #3646 + +------------------------------------------------------------------- Old: ---- pylint-2.5.2.tar.gz New: ---- pylint-2.5.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pylint.spec ++++++ --- /var/tmp/diff_new_pack.5UwSpX/_old 2020-06-11 14:45:34.225534295 +0200 +++ /var/tmp/diff_new_pack.5UwSpX/_new 2020-06-11 14:45:34.229534307 +0200 @@ -20,7 +20,7 @@ %bcond_without tests %define skip_python2 1 Name: python-pylint -Version: 2.5.2 +Version: 2.5.3 Release: 0 Summary: Syntax and style checker for Python code License: GPL-2.0-or-later ++++++ pylint-2.5.2.tar.gz -> pylint-2.5.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-2.5.2/CONTRIBUTORS.txt new/pylint-2.5.3/CONTRIBUTORS.txt --- old/pylint-2.5.2/CONTRIBUTORS.txt 2020-05-05 14:57:24.000000000 +0200 +++ new/pylint-2.5.3/CONTRIBUTORS.txt 2020-06-08 09:00:16.000000000 +0200 @@ -381,3 +381,9 @@ * Yang Yang: contributor * Andrew J. Simmons (anjsimmo): contributor + +* Damien Baty: contributor + +* Daniel R. Neal (danrneal): contributer + +* Jeremy Fleischman (jfly): contributer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-2.5.2/ChangeLog new/pylint-2.5.3/ChangeLog --- old/pylint-2.5.2/ChangeLog 2020-05-05 14:57:24.000000000 +0200 +++ new/pylint-2.5.3/ChangeLog 2020-06-08 09:00:16.000000000 +0200 @@ -2,6 +2,45 @@ Pylint's ChangeLog ------------------ +What's New in Pylint 2.5.3? +=========================== + +Release date: 2020-06-8 + +* Fix a regression where disable comments that have checker names with numbers in them are not parsed correctly + + Close #3666 + +* `property-with-parameters` properly handles abstract properties + + Close #3600 + +* `continue-in-finally` no longer emitted on Python 3.8 where it's now valid + + Close #3612 + +* Fix a regression where messages with dash are not fully parsed + + Close #3604 + +* Fix a regression where the score was not reported with multiple jobs + + Close #3547 + +* In a TOML configuration file, it's now possible to use rich (non-string) types, such as list, integer or boolean instead of strings. For example, one can now define a *list* of message identifiers to enable like this:: + + enable = [ + "use-symbolic-message-instead", + "useless-suppression", + ] + + Close #3538 + +* Protect against `AttributeError` when checking `cell-var-from-loop` + + Close #3646 + + What's New in Pylint 2.5.2? =========================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-2.5.2/PKG-INFO new/pylint-2.5.3/PKG-INFO --- old/pylint-2.5.2/PKG-INFO 2020-05-05 15:00:18.000000000 +0200 +++ new/pylint-2.5.3/PKG-INFO 2020-06-08 09:03:09.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.2 Name: pylint -Version: 2.5.2 +Version: 2.5.3 Summary: python code static checker Home-page: https://github.com/PyCQA/pylint Author: Python Code Quality Authority diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-2.5.2/pylint/__pkginfo__.py new/pylint-2.5.3/pylint/__pkginfo__.py --- old/pylint-2.5.2/pylint/__pkginfo__.py 2020-05-05 14:57:24.000000000 +0200 +++ new/pylint-2.5.3/pylint/__pkginfo__.py 2020-06-08 09:00:16.000000000 +0200 @@ -28,7 +28,7 @@ from os.path import join # For an official release, use dev_version = None -numversion = (2, 5, 2) +numversion = (2, 5, 3) dev_version = None version = ".".join(str(num) for num in numversion) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-2.5.2/pylint/checkers/base.py new/pylint-2.5.3/pylint/checkers/base.py --- old/pylint-2.5.2/pylint/checkers/base.py 2020-05-05 14:57:24.000000000 +0200 +++ new/pylint-2.5.3/pylint/checkers/base.py 2020-06-08 09:00:16.000000000 +0200 @@ -541,6 +541,7 @@ "continue-in-finally", "Emitted when the `continue` keyword is found " "inside a finally clause, which is a SyntaxError.", + {"maxversion": (3, 8)}, ), "E0117": ( "nonlocal name %s found without binding", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-2.5.2/pylint/checkers/classes.py new/pylint-2.5.3/pylint/checkers/classes.py --- old/pylint-2.5.2/pylint/checkers/classes.py 2020-05-05 14:57:24.000000000 +0200 +++ new/pylint-2.5.3/pylint/checkers/classes.py 2020-06-08 09:00:16.000000000 +0200 @@ -1109,7 +1109,12 @@ ) def _check_property_with_parameters(self, node): - if node.args.args and len(node.args.args) > 1 and decorated_with_property(node): + if ( + node.args.args + and len(node.args.args) > 1 + and decorated_with_property(node) + and not is_property_setter(node) + ): self.add_message("property-with-parameters", node=node) def _check_invalid_overridden_method(self, function_node, parent_function_node): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-2.5.2/pylint/checkers/variables.py new/pylint-2.5.3/pylint/checkers/variables.py --- old/pylint-2.5.2/pylint/checkers/variables.py 2020-05-05 14:57:24.000000000 +0200 +++ new/pylint-2.5.3/pylint/checkers/variables.py 2020-06-08 09:00:16.000000000 +0200 @@ -1716,13 +1716,14 @@ else: assign_scope = assignment_node.scope() maybe_for = assignment_node - while not isinstance(maybe_for, astroid.For): + while maybe_for and not isinstance(maybe_for, astroid.For): if maybe_for is assign_scope: break maybe_for = maybe_for.parent else: if ( - maybe_for.parent_of(node_scope) + maybe_for + and maybe_for.parent_of(node_scope) and not _is_direct_lambda_call() and not isinstance(node_scope.statement(), astroid.Return) ): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-2.5.2/pylint/config.py new/pylint-2.5.3/pylint/config.py --- old/pylint-2.5.2/pylint/config.py 2020-05-05 14:57:24.000000000 +0200 +++ new/pylint-2.5.3/pylint/config.py 2020-06-08 09:00:16.000000000 +0200 @@ -741,7 +741,7 @@ raise OSError("The config file {:s} doesn't exist!".format(config_file)) use_config_file = config_file and os.path.exists(config_file) - if use_config_file: + if use_config_file: # pylint: disable=too-many-nested-blocks parser = self.cfgfile_parser if config_file.endswith(".toml"): @@ -754,6 +754,15 @@ pass else: for section, values in sections_values.items(): + # TOML has rich types, convert values to + # strings as ConfigParser expects. + for option, value in values.items(): + if isinstance(value, bool): + values[option] = "yes" if value else "no" + elif isinstance(value, int): + values[option] = str(value) + elif isinstance(value, list): + values[option] = ",".join(value) parser._sections[section.upper()] = values else: # Use this encoding in order to strip the BOM marker, if any. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-2.5.2/pylint/lint/check_parallel.py new/pylint-2.5.3/pylint/lint/check_parallel.py --- old/pylint-2.5.2/pylint/lint/check_parallel.py 2020-05-05 14:57:24.000000000 +0200 +++ new/pylint-2.5.3/pylint/lint/check_parallel.py 2020-06-08 09:00:16.000000000 +0200 @@ -71,6 +71,7 @@ msgs = [_get_new_args(m) for m in _worker_linter.reporter.messages] return ( _worker_linter.current_name, + _worker_linter.file_state.base_name, msgs, _worker_linter.stats, _worker_linter.msg_status, @@ -97,9 +98,10 @@ all_stats = [] - for module, messages, stats, msg_status in pool.imap_unordered( + for module, 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) for msg in messages: msg = Message(*msg) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-2.5.2/pylint/utils/pragma_parser.py new/pylint-2.5.3/pylint/utils/pragma_parser.py --- old/pylint-2.5.2/pylint/utils/pragma_parser.py 2020-05-05 14:57:24.000000000 +0200 +++ new/pylint-2.5.3/pylint/utils/pragma_parser.py 2020-06-08 09:00:16.000000000 +0200 @@ -17,7 +17,7 @@ .*? # Anything (as little as possible) \bpylint: # pylint word and column \s* # Any number of whitespaces - ([^;#\n]+)) # Anything except semicolon or hash or newline (it is the second matched group) + ([^;#\n]+)) # Anything except semicolon or hash or newline (it is the second matched group) # and end of the first matched group [;#]{0,1}""" # From 0 to 1 repetition of semicolon or hash OPTION_PO = re.compile(OPTION_RGX, re.VERBOSE) @@ -39,7 +39,7 @@ TOKEN_SPECIFICATION = [ ("KEYWORD", r"\b({:s})\b".format(ALL_KEYWORDS)), - ("MESSAGE_STRING", r"[A-Za-z\-]{2,}"), # Identifiers + ("MESSAGE_STRING", r"[0-9A-Za-z\-\_]{2,}"), # Identifiers ("ASSIGN", r"="), # Assignment operator ("MESSAGE_NUMBER", r"[CREIWF]{1}\d*"), ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-2.5.2/pylint.egg-info/PKG-INFO new/pylint-2.5.3/pylint.egg-info/PKG-INFO --- old/pylint-2.5.2/pylint.egg-info/PKG-INFO 2020-05-05 15:00:18.000000000 +0200 +++ new/pylint-2.5.3/pylint.egg-info/PKG-INFO 2020-06-08 09:03:09.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.2 Name: pylint -Version: 2.5.2 +Version: 2.5.3 Summary: python code static checker Home-page: https://github.com/PyCQA/pylint Author: Python Code Quality Authority diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-2.5.2/pylint.egg-info/SOURCES.txt new/pylint-2.5.3/pylint.egg-info/SOURCES.txt --- old/pylint-2.5.2/pylint.egg-info/SOURCES.txt 2020-05-05 15:00:18.000000000 +0200 +++ new/pylint-2.5.3/pylint.egg-info/SOURCES.txt 2020-06-08 09:03:09.000000000 +0200 @@ -353,6 +353,7 @@ tests/functional/c/consider_using_sys_exit_exempted.py tests/functional/c/consider_using_sys_exit_local_scope.py tests/functional/c/continue_in_finally.py +tests/functional/c/continue_in_finally.rc tests/functional/c/continue_in_finally.txt tests/functional/c/control_pragmas.py tests/functional/c/control_pragmas.txt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-2.5.2/tests/functional/c/cellvar_escaping_loop.py new/pylint-2.5.3/tests/functional/c/cellvar_escaping_loop.py --- old/pylint-2.5.2/tests/functional/c/cellvar_escaping_loop.py 2020-05-05 14:57:24.000000000 +0200 +++ new/pylint-2.5.3/tests/functional/c/cellvar_escaping_loop.py 2020-06-08 09:00:16.000000000 +0200 @@ -1,7 +1,10 @@ -# pylint: disable=print-statement, unnecessary-comprehension +# pylint: disable=print-statement, unnecessary-comprehension,missing-docstring,too-few-public-methods """Tests for loopvar-in-closure.""" from __future__ import print_function +from enum import Enum + + def good_case(): """No problems here.""" lst = [] @@ -118,3 +121,11 @@ print(j) lst.append(lambda: i) # [cell-var-from-loop] return lst + + +class Test(Enum): + TEST = (40, 160) + + @staticmethod + def new_test(minimum=TEST[0], maximum=TEST[1]): + return minimum, maximum diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-2.5.2/tests/functional/c/cellvar_escaping_loop.txt new/pylint-2.5.3/tests/functional/c/cellvar_escaping_loop.txt --- old/pylint-2.5.2/tests/functional/c/cellvar_escaping_loop.txt 2020-05-05 14:57:24.000000000 +0200 +++ new/pylint-2.5.3/tests/functional/c/cellvar_escaping_loop.txt 2020-06-08 09:00:16.000000000 +0200 @@ -1,6 +1,6 @@ -cell-var-from-loop:67:bad_case.<lambda>:Cell variable i defined in loop -cell-var-from-loop:72:bad_case2.<lambda>:Cell variable i defined in loop -cell-var-from-loop:80:bad_case3.<lambda>:Cell variable j defined in loop -cell-var-from-loop:90:bad_case4.nested:Cell variable i defined in loop -cell-var-from-loop:111:bad_case5.<lambda>:Cell variable i defined in loop -cell-var-from-loop:119:bad_case6.<lambda>:Cell variable i defined in loop +cell-var-from-loop:70:bad_case.<lambda>:Cell variable i defined in loop +cell-var-from-loop:75:bad_case2.<lambda>:Cell variable i defined in loop +cell-var-from-loop:83:bad_case3.<lambda>:Cell variable j defined in loop +cell-var-from-loop:93:bad_case4.nested:Cell variable i defined in loop +cell-var-from-loop:114:bad_case5.<lambda>:Cell variable i defined in loop +cell-var-from-loop:122:bad_case6.<lambda>:Cell variable i defined in loop diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-2.5.2/tests/functional/c/continue_in_finally.rc new/pylint-2.5.3/tests/functional/c/continue_in_finally.rc --- old/pylint-2.5.2/tests/functional/c/continue_in_finally.rc 1970-01-01 01:00:00.000000000 +0100 +++ new/pylint-2.5.3/tests/functional/c/continue_in_finally.rc 2020-06-08 09:00:16.000000000 +0200 @@ -0,0 +1,2 @@ +[testoptions] +max_pyver=3.8 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-2.5.2/tests/functional/p/property_with_parameters.py new/pylint-2.5.3/tests/functional/p/property_with_parameters.py --- old/pylint-2.5.2/tests/functional/p/property_with_parameters.py 2020-05-05 14:57:24.000000000 +0200 +++ new/pylint-2.5.3/tests/functional/p/property_with_parameters.py 2020-06-08 09:00:16.000000000 +0200 @@ -1,7 +1,21 @@ # pylint: disable=missing-docstring, too-few-public-methods +from abc import ABCMeta, abstractproperty class Cls: @property def attribute(self, param, param1): # [property-with-parameters] return param + param1 + + +class MyClassBase(metaclass=ABCMeta): + """MyClassBase.""" + + @abstractproperty + def example(self): + """Getter.""" + + @abstractproperty + @example.setter + def example(self, value): + """Setter.""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-2.5.2/tests/functional/p/property_with_parameters.txt new/pylint-2.5.3/tests/functional/p/property_with_parameters.txt --- old/pylint-2.5.2/tests/functional/p/property_with_parameters.txt 2020-05-05 14:57:24.000000000 +0200 +++ new/pylint-2.5.3/tests/functional/p/property_with_parameters.txt 2020-06-08 09:00:16.000000000 +0200 @@ -1 +1 @@ -property-with-parameters:6:Cls.attribute:Cannot have defined parameters for properties +property-with-parameters:7:Cls.attribute:Cannot have defined parameters for properties diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-2.5.2/tests/test_config.py new/pylint-2.5.3/tests/test_config.py --- old/pylint-2.5.2/tests/test_config.py 2020-05-05 14:57:24.000000000 +0200 +++ new/pylint-2.5.3/tests/test_config.py 2020-06-08 09:00:16.000000000 +0200 @@ -1,37 +1,93 @@ +# pylint: disable=missing-module-docstring, missing-function-docstring, protected-access import unittest.mock import pylint.lint -def test_can_read_toml(tmp_path): - config_file = tmp_path / "pyproject.toml" +def check_configuration_file_reader(config_file): + """Initialize pylint with the given configuration file and check that + what we initialized the linter with what was expected. + """ + args = ["--rcfile", str(config_file), __file__] + # If we used `pytest.raises(SystemExit)`, the `runner` variable + # would not be accessible outside the `with` block. + with unittest.mock.patch("sys.exit") as mocked_exit: + # Do not actually run checks, that could be slow. Do not mock + # `Pylinter.check`: it calls `Pylinter.initialize` which is + # needed to properly set up messages inclusion/exclusion + # in `_msg_states`, used by `is_message_enabled`. + with unittest.mock.patch("pylint.lint.pylinter.check_parallel"): + runner = pylint.lint.Run(args) + + # "logging-not-lazy" and "logging-format-interpolation" + expected_disabled = {"W1201", "W1202"} + for msgid in expected_disabled: + assert not runner.linter.is_message_enabled(msgid) + assert runner.linter.config.jobs == 10 + assert runner.linter.config.reports + + mocked_exit.assert_called_once_with(0) + return runner + + +def test_can_read_ini(tmp_path): + # Check that we can read the "regular" INI .pylintrc file + config_file = tmp_path / ".pylintrc" config_file.write_text( - "[tool.pylint.'messages control']\n" - "disable='all'\n" - "enable='missing-module-docstring'\n" - "jobs=10\n" + """ +[messages control] +disable = logging-not-lazy,logging-format-interpolation +jobs = 10 +reports = yes +""" ) - linter = pylint.lint.PyLinter() - linter.global_set_option = unittest.mock.MagicMock() - linter.read_config_file(str(config_file)) - - assert linter.global_set_option.called_with("disable", "all") - assert linter.global_set_option.called_with("enable", "missing-module-docstring") - assert linter.global_set_option.called_with("jobs", 10) + check_configuration_file_reader(config_file) def test_can_read_setup_cfg(tmp_path): + # Check that we can read a setup.cfg (which is an INI file where + # section names are prefixed with "pylint." config_file = tmp_path / "setup.cfg" config_file.write_text( - "[pylint.messages control]\n" - "disable=all\n" - "enable=missing-module-docstring\n" - "jobs=10\n" + """ +[pylint.messages control] +disable = logging-not-lazy,logging-format-interpolation +jobs = 10 +reports = yes +""" + ) + check_configuration_file_reader(config_file) + + +def test_can_read_toml(tmp_path): + # Check that we can read a TOML file where lists and integers are + # expressed as strings. + config_file = tmp_path / "pyproject.toml" + config_file.write_text( + """ +[tool.pylint."messages control"] +disable = "logging-not-lazy,logging-format-interpolation" +jobs = "10" +reports = "yes" +""" + ) + check_configuration_file_reader(config_file) + + +def test_can_read_toml_rich_types(tmp_path): + # Check that we can read a TOML file where lists, integers and + # booleans are expressed as such (and not as strings), using TOML + # type system. + config_file = tmp_path / "pyproject.toml" + config_file.write_text( + """ +[tool.pylint."messages control"] +disable = [ + "logging-not-lazy", + "logging-format-interpolation", +] +jobs = 10 +reports = true +""" ) - linter = pylint.lint.PyLinter() - linter.global_set_option = unittest.mock.MagicMock() - linter.read_config_file(str(config_file)) - - assert linter.global_set_option.called_with("disable", "all") - assert linter.global_set_option.called_with("enable", "missing-module-docstring") - assert linter.global_set_option.called_with("jobs", 10) + check_configuration_file_reader(config_file) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-2.5.2/tests/test_pragma_parser.py new/pylint-2.5.3/tests/test_pragma_parser.py --- old/pylint-2.5.2/tests/test_pragma_parser.py 2020-05-05 14:57:24.000000000 +0200 +++ new/pylint-2.5.3/tests/test_pragma_parser.py 2020-06-08 09:00:16.000000000 +0200 @@ -16,6 +16,14 @@ assert pragma_repr.messages == ["missing-docstring"] +def test_disable_checker_with_number_in_name(): + comment = "#pylint: disable = j3-custom-checker" + match = OPTION_PO.search(comment) + for pragma_repr in parse_pragma(match.group(2)): + assert pragma_repr.action == "disable" + assert pragma_repr.messages == ["j3-custom-checker"] + + def test_simple_pragma_no_messages(): comment = "#pylint: skip-file" match = OPTION_PO.search(comment) @@ -82,3 +90,11 @@ match = OPTION_PO.search(comment) with pytest.raises(InvalidPragmaError): list(parse_pragma(match.group(2))) + + +def test_parse_message_with_dash(): + comment = "#pylint: disable = raw_input-builtin" + match = OPTION_PO.search(comment) + res = list(parse_pragma(match.group(2))) + assert res[0].action == "disable" + assert res[0].messages == ["raw_input-builtin"] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-2.5.2/tests/test_self.py new/pylint-2.5.3/tests/test_self.py --- old/pylint-2.5.2/tests/test_self.py 2020-05-05 14:57:24.000000000 +0200 +++ new/pylint-2.5.3/tests/test_self.py 2020-06-08 09:00:16.000000000 +0200 @@ -778,3 +778,8 @@ ], code=0, ) + + def test_jobs_score(self): + path = join(HERE, "regrtest_data", "unused_variable.py") + expected = "Your code has been rated at 7.50/10" + self._test_output([path, "--jobs=2", "-ry"], expected_output=expected)
