From 70ad9f916e3534288573a5bbf1741a4abb73b238 Mon Sep 17 00:00:00 2001 From: Dmitry Pribysh Date: Thu, 29 Oct 2015 18:25:53 +0300 Subject: Add a few functional tests for enhanced unpacking checker --- pylint/test/functional/unpacking_non_sequence.py | 25 ++++++++++++++++++++++- pylint/test/functional/unpacking_non_sequence.txt | 24 +++++++++++----------- 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 -- cgit v1.2.1