summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Pribysh <dmand@yandex.ru>2015-10-29 18:25:53 +0300
committerDmitry Pribysh <dmand@yandex.ru>2015-10-29 18:25:53 +0300
commit70ad9f916e3534288573a5bbf1741a4abb73b238 (patch)
tree3a9e519e7e6a9931f8eed542c79fec2ce8616229
parent5c02d3c9410798f09a6c875b21828cce90e270ae (diff)
downloadpylint-enhance-unpacking-checker.tar.gz
Add a few functional tests for enhanced unpacking checkerenhance-unpacking-checker
-rw-r--r--pylint/test/functional/unpacking_non_sequence.py25
-rw-r--r--pylint/test/functional/unpacking_non_sequence.txt24
2 files changed, 36 insertions, 13 deletions
diff --git a/pylint/test/functional/unpacking_non_sequence.py b/pylint/test/functional/unpacking_non_sequence.py
index 93b1bbd..f449d5b 100644
--- a/pylint/test/functional/unpacking_non_sequence.py
+++ b/pylint/test/functional/unpacking_non_sequence.py
@@ -1,9 +1,10 @@
"""Check unpacking non-sequences in assignments. """
# pylint: disable=too-few-public-methods, invalid-name, attribute-defined-outside-init, unused-variable, no-absolute-import
-# pylint: disable=using-constant-test
+# pylint: disable=using-constant-test, no-init
from os import rename as nonseq_func
from functional.unpacking import nonseq
+from six import with_metaclass
__revision__ = 0
@@ -37,6 +38,27 @@ def good_unpacking2():
""" returns should be unpackable """
return good_unpacking()
+class MetaIter(type):
+ "metaclass that makes classes that use it iterables"
+ def __iter__(cls):
+ return iter((1, 2))
+
+class IterClass(with_metaclass(MetaIter)):
+ "class that is iterable (and unpackable)"
+
+class AbstrClass(object):
+ "abstract class"
+ pair = None
+
+ def setup_pair(self):
+ "abstract method"
+ raise NotImplementedError
+
+ def __init__(self):
+ "error should not be emitted because setup_pair is abstract"
+ self.setup_pair()
+ x, y = self.pair
+
a, b = [1, 2]
a, b = (1, 2)
a, b = set([1, 2])
@@ -47,6 +69,7 @@ a, b = Iter()
a, b = (number for number in range(2))
a, b = good_unpacking()
a, b = good_unpacking2()
+a, b = IterClass
# Not working
class NonSeq(object):
diff --git a/pylint/test/functional/unpacking_non_sequence.txt b/pylint/test/functional/unpacking_non_sequence.txt
index af58686..8d13c44 100644
--- a/pylint/test/functional/unpacking_non_sequence.txt
+++ b/pylint/test/functional/unpacking_non_sequence.txt
@@ -1,12 +1,12 @@
-unpacking-non-sequence:61::Attempting to unpack a non-sequence defined at line 52
-unpacking-non-sequence:62::Attempting to unpack a non-sequence
-unpacking-non-sequence:63::Attempting to unpack a non-sequence None
-unpacking-non-sequence:64::Attempting to unpack a non-sequence 1
-unpacking-non-sequence:65::Attempting to unpack a non-sequence defined at line 9 of functional.unpacking
-unpacking-non-sequence:66::Attempting to unpack a non-sequence defined at line 11 of functional.unpacking
-unpacking-non-sequence:67::Attempting to unpack a non-sequence defined at line 58
-unpacking-non-sequence:68::Attempting to unpack a non-sequence
-unpacking-non-sequence:83:ClassUnpacking.test:Attempting to unpack a non-sequence defined at line 52
-unpacking-non-sequence:84:ClassUnpacking.test:Attempting to unpack a non-sequence
-unpacking-non-sequence:85:ClassUnpacking.test:Attempting to unpack a non-sequence defined at line 58
-unpacking-non-sequence:86:ClassUnpacking.test:Attempting to unpack a non-sequence
+unpacking-non-sequence:84::Attempting to unpack a non-sequence defined at line 75
+unpacking-non-sequence:85::Attempting to unpack a non-sequence
+unpacking-non-sequence:86::Attempting to unpack a non-sequence None
+unpacking-non-sequence:87::Attempting to unpack a non-sequence 1
+unpacking-non-sequence:88::Attempting to unpack a non-sequence defined at line 9 of functional.unpacking
+unpacking-non-sequence:89::Attempting to unpack a non-sequence defined at line 11 of functional.unpacking
+unpacking-non-sequence:90::Attempting to unpack a non-sequence defined at line 81
+unpacking-non-sequence:91::Attempting to unpack a non-sequence
+unpacking-non-sequence:106:ClassUnpacking.test:Attempting to unpack a non-sequence defined at line 75
+unpacking-non-sequence:107:ClassUnpacking.test:Attempting to unpack a non-sequence
+unpacking-non-sequence:108:ClassUnpacking.test:Attempting to unpack a non-sequence defined at line 81
+unpacking-non-sequence:109:ClassUnpacking.test:Attempting to unpack a non-sequence