diff options
Diffstat (limited to 'pylint/test/functional/bad_reversed_sequence.py')
-rw-r--r-- | pylint/test/functional/bad_reversed_sequence.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/pylint/test/functional/bad_reversed_sequence.py b/pylint/test/functional/bad_reversed_sequence.py new file mode 100644 index 0000000..6fda2c0 --- /dev/null +++ b/pylint/test/functional/bad_reversed_sequence.py @@ -0,0 +1,60 @@ +""" Checks that reversed() receive proper argument """ + +# pylint: disable=too-few-public-methods,no-self-use,no-absolute-import +from collections import deque + +__revision__ = 0 + +class GoodReversed(object): + """ Implements __reversed__ """ + def __reversed__(self): + return [1, 2, 3] + +class SecondGoodReversed(object): + """ Implements __len__ and __getitem__ """ + def __len__(self): + return 3 + + def __getitem__(self, index): + return index + +class BadReversed(object): + """ implements only len() """ + def __len__(self): + return 3 + +class SecondBadReversed(object): + """ implements only __getitem__ """ + def __getitem__(self, index): + return index + +class ThirdBadReversed(dict): + """ dict subclass """ + +def uninferable(seq): + """ This can't be infered at this moment, + make sure we don't have a false positive. + """ + return reversed(seq) + +def test(path): + """ test function """ + seq = reversed() # [missing-reversed-argument] + seq = reversed(None) # [bad-reversed-sequence] + seq = reversed([1, 2, 3]) + seq = reversed((1, 2, 3)) + seq = reversed(set()) # [bad-reversed-sequence] + seq = reversed({'a': 1, 'b': 2}) # [bad-reversed-sequence] + seq = reversed(iter([1, 2, 3])) # [bad-reversed-sequence] + seq = reversed(GoodReversed()) + seq = reversed(SecondGoodReversed()) + seq = reversed(BadReversed()) # [bad-reversed-sequence] + seq = reversed(SecondBadReversed()) # [bad-reversed-sequence] + seq = reversed(range(100)) + seq = reversed(ThirdBadReversed()) # [bad-reversed-sequence] + seq = reversed(lambda: None) # [bad-reversed-sequence] + seq = reversed(deque([])) + seq = reversed("123") + seq = uninferable([1, 2, 3]) + seq = reversed(path.split("/")) + return seq |