summaryrefslogtreecommitdiff
path: root/pylint/test/functional/bad_reversed_sequence.py
diff options
context:
space:
mode:
Diffstat (limited to 'pylint/test/functional/bad_reversed_sequence.py')
-rw-r--r--pylint/test/functional/bad_reversed_sequence.py60
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