summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSylvain Thénault <sylvain.thenault@logilab.fr>2012-05-21 14:09:07 +0200
committerSylvain Thénault <sylvain.thenault@logilab.fr>2012-05-21 14:09:07 +0200
commitba578113c9c1b88cbc57ef5a9f09ef0a5a5cde5f (patch)
treea63ae286e6a361ca48989fd9fbe33106871d1f18
parenta83c752258e482ced75894fb6092c8fa9ba7003c (diff)
downloadpylint-git-ba578113c9c1b88cbc57ef5a9f09ef0a5a5cde5f.tar.gz
fix crash when using set in regexp for --generated-members option. Closes #88914
-rw-r--r--ChangeLog7
-rw-r--r--checkers/typecheck.py1
-rw-r--r--test/smoketest.py5
3 files changed, 11 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 26a7d9b14..60f5cfc04 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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)