diff options
author | Sylvain Thénault <sylvain.thenault@logilab.fr> | 2012-05-21 14:09:07 +0200 |
---|---|---|
committer | Sylvain Thénault <sylvain.thenault@logilab.fr> | 2012-05-21 14:09:07 +0200 |
commit | ba578113c9c1b88cbc57ef5a9f09ef0a5a5cde5f (patch) | |
tree | a63ae286e6a361ca48989fd9fbe33106871d1f18 | |
parent | a83c752258e482ced75894fb6092c8fa9ba7003c (diff) | |
download | pylint-git-ba578113c9c1b88cbc57ef5a9f09ef0a5a5cde5f.tar.gz |
fix crash when using set in regexp for --generated-members option. Closes #88914
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | checkers/typecheck.py | 1 | ||||
-rw-r--r-- | test/smoketest.py | 5 |
3 files changed, 11 insertions, 2 deletions
@@ -11,11 +11,14 @@ ChangeLog for PyLint * #89092: don't emit E0202 (attribute hiding a method) on @property methods - * #92584 fix pylint-gui crash due to internal API change + * #92584: fix pylint-gui crash due to internal API change - * #87192 fix crash when decorators are accessed through more than one dot + * #87192: fix crash when decorators are accessed through more than one dot (for instance @a.b is fine, @a.b.c crash) + * #88914: fix parsing of --generated-members options, leading to crash + when using a regexp value set + * fix potential crashes with utils.safe_infer raising InferenceError diff --git a/checkers/typecheck.py b/checkers/typecheck.py index b0a591f48..db2f49370 100644 --- a/checkers/typecheck.py +++ b/checkers/typecheck.py @@ -132,6 +132,7 @@ accessed. Python regular expressions are accepted.'} if isinstance(self.config.generated_members, str): gen = shlex.shlex(self.config.generated_members) gen.whitespace += ',' + gen.wordchars += '[]-+' self.config.generated_members = tuple(tok.strip('"') for tok in gen) for pattern in self.config.generated_members: # attribute is marked as generated, stop here diff --git a/test/smoketest.py b/test/smoketest.py index 43f231a07..30d5712cf 100644 --- a/test/smoketest.py +++ b/test/smoketest.py @@ -82,6 +82,11 @@ class RunTC(TestCase): self._runtest([join(HERE, 'input', 'noext')], code=0) @tag('smoke') + def test_generated_members(self): + # XXX dual end quotation since optparse buggily remove one... + self._runtest(['--generated-members=objects,DoesNotExist,delay,retry,"[a-zA-Z]+_set{1,2}""', 'pylint.lint']) + + @tag('smoke') def test_w0704_ignored(self): self._runtest([join(HERE, 'input', 'ignore_except_pass_by_default.py')], code=0) |