summaryrefslogtreecommitdiff
path: root/tests/extensions/data
diff options
context:
space:
mode:
Diffstat (limited to 'tests/extensions/data')
-rw-r--r--tests/extensions/data/bad_builtin.py4
-rw-r--r--tests/extensions/data/broad_try_clause.py14
-rw-r--r--tests/extensions/data/compare_to_zero.py28
-rw-r--r--tests/extensions/data/docstring.py40
-rw-r--r--tests/extensions/data/elif.py26
-rw-r--r--tests/extensions/data/empty_string_comparison.py16
-rw-r--r--tests/extensions/data/mccabe.py205
-rw-r--r--tests/extensions/data/overlapping_exceptions.py45
-rw-r--r--tests/extensions/data/overlapping_exceptions_py33.py18
-rw-r--r--tests/extensions/data/redefined.py85
10 files changed, 481 insertions, 0 deletions
diff --git a/tests/extensions/data/bad_builtin.py b/tests/extensions/data/bad_builtin.py
new file mode 100644
index 000000000..fd3e5c054
--- /dev/null
+++ b/tests/extensions/data/bad_builtin.py
@@ -0,0 +1,4 @@
+# pylint: disable=missing-docstring
+
+TEST = map(str, (1, 2, 3)) # [bad-builtin]
+TEST1 = filter(str, (1, 2, 3)) # [bad-builtin]
diff --git a/tests/extensions/data/broad_try_clause.py b/tests/extensions/data/broad_try_clause.py
new file mode 100644
index 000000000..4d65302c8
--- /dev/null
+++ b/tests/extensions/data/broad_try_clause.py
@@ -0,0 +1,14 @@
+# pylint: disable=missing-docstring, invalid-name
+
+MY_DICTIONARY = {"key_one": 1, "key_two": 2, "key_three": 3}
+
+try: # [max-try-statements]
+ value = MY_DICTIONARY["key_one"]
+ value += 1
+except KeyError:
+ pass
+
+try:
+ value = MY_DICTIONARY["key_one"]
+except KeyError:
+ value = 0
diff --git a/tests/extensions/data/compare_to_zero.py b/tests/extensions/data/compare_to_zero.py
new file mode 100644
index 000000000..dfe6bbcb5
--- /dev/null
+++ b/tests/extensions/data/compare_to_zero.py
@@ -0,0 +1,28 @@
+# pylint: disable=literal-comparison,missing-docstring,misplaced-comparison-constant
+
+X = 123
+Y = len('test')
+
+if X is 0: # [compare-to-zero]
+ pass
+
+if Y is not 0: # [compare-to-zero]
+ pass
+
+if X == 0: # [compare-to-zero]
+ pass
+
+if Y != 0: # [compare-to-zero]
+ pass
+
+if X > 0:
+ pass
+
+if X < 0:
+ pass
+
+if 0 < X:
+ pass
+
+if 0 > X:
+ pass
diff --git a/tests/extensions/data/docstring.py b/tests/extensions/data/docstring.py
new file mode 100644
index 000000000..8f34c657f
--- /dev/null
+++ b/tests/extensions/data/docstring.py
@@ -0,0 +1,40 @@
+"""Checks of Dosctrings 'docstring-first-line-empty' 'bad-docstring-quotes'"""
+
+
+def check_messages(*messages):
+ """
+ docstring"""
+ return messages
+
+def function2():
+ """Test Ok"""
+
+class FFFF:
+ """
+ Test Docstring First Line Empty
+ """
+
+ def method1(self):
+ '''
+ Test Triple Single Quotes docstring
+ '''
+
+ def method2(self):
+ "bad docstring 1"
+
+ def method3(self):
+ 'bad docstring 2'
+
+ def method4(self):
+ ' """bad docstring 3 '
+
+ @check_messages('bad-open-mode', 'redundant-unittest-assert',
+ 'deprecated-module')
+ def method5(self):
+ """Test OK 1 with decorators"""
+
+ def method6(self):
+ r"""Test OK 2 with raw string"""
+
+ def method7(self):
+ u"""Test OK 3 with unicode string"""
diff --git a/tests/extensions/data/elif.py b/tests/extensions/data/elif.py
new file mode 100644
index 000000000..22e79c1db
--- /dev/null
+++ b/tests/extensions/data/elif.py
@@ -0,0 +1,26 @@
+"""Checks use of "else if" triggers a refactor message"""
+
+def my_function():
+ """docstring"""
+ myint = 2
+ if myint > 5:
+ pass
+ else:
+ if myint <= 5:
+ pass
+ else:
+ myint = 3
+ if myint > 2:
+ if myint > 3:
+ pass
+ elif myint == 3:
+ pass
+ elif myint < 3:
+ pass
+ else:
+ if myint:
+ pass
+ else:
+ if myint:
+ pass
+ myint = 4
diff --git a/tests/extensions/data/empty_string_comparison.py b/tests/extensions/data/empty_string_comparison.py
new file mode 100644
index 000000000..c6dcf8ea8
--- /dev/null
+++ b/tests/extensions/data/empty_string_comparison.py
@@ -0,0 +1,16 @@
+# pylint: disable=literal-comparison,missing-docstring
+
+X = ''
+Y = 'test'
+
+if X is '': # [compare-to-empty-string]
+ pass
+
+if Y is not "": # [compare-to-empty-string]
+ pass
+
+if X == "": # [compare-to-empty-string]
+ pass
+
+if Y != '': # [compare-to-empty-string]
+ pass
diff --git a/tests/extensions/data/mccabe.py b/tests/extensions/data/mccabe.py
new file mode 100644
index 000000000..fdbdb5f0c
--- /dev/null
+++ b/tests/extensions/data/mccabe.py
@@ -0,0 +1,205 @@
+"""Checks use of "too-complex" check"""
+
+
+def f1():
+ """McCabe rating: 1"""
+ pass
+
+
+def f2(n):
+ """McCabe rating: 1"""
+ k = n + 4
+ s = k + n
+ return s
+
+
+def f3(n):
+ """McCabe rating: 3"""
+ if n > 3:
+ return "bigger than three"
+ elif n > 4:
+ return "is never executed"
+ else:
+ return "smaller than or equal to three"
+
+
+def f4():
+ """McCabe rating: 2"""
+ for i in range(10):
+ print(i)
+
+
+def f5(mylist):
+ """McCabe rating: 2"""
+ for i in mylist:
+ print(i)
+ else:
+ print(None)
+
+
+def f6(n):
+ """McCabe rating: 2"""
+ if n > 4:
+ return f(n - 1)
+ else:
+ return n
+
+
+def f7():
+ """McCabe rating: 3"""
+ def b():
+ """McCabe rating: 2"""
+ def c():
+ """McCabe rating: 1"""
+ pass
+ c()
+ b()
+
+
+def f8():
+ """McCabe rating: 4"""
+ try:
+ print(1)
+ except TypeA:
+ print(2)
+ except TypeB:
+ print(3)
+ else:
+ print(4)
+
+
+def f9():
+ """McCabe rating: 9"""
+ myint = 2
+ if myint > 5:
+ pass
+ else:
+ if myint <= 5:
+ pass
+ else:
+ myint = 3
+ if myint > 2:
+ if myint > 3:
+ pass
+ elif myint == 3:
+ pass
+ elif myint < 3:
+ pass
+ else:
+ if myint:
+ pass
+ else:
+ if myint:
+ pass
+ myint = 4
+
+
+def f10():
+ """McCabe rating: 11"""
+ myint = 2
+ if myint == 5:
+ return myint
+ elif myint == 6:
+ return myint
+ elif myint == 7:
+ return myint
+ elif myint == 8:
+ return myint
+ elif myint == 9:
+ return myint
+ elif myint == 10:
+ if myint == 8:
+ while True:
+ return True
+ elif myint == 8:
+ with myint:
+ return 8
+ else:
+ if myint == 2:
+ return myint
+ return myint
+ return myint
+
+
+class MyClass1(object):
+ """Class of example to test mccabe"""
+ _name = 'MyClass' # To force a tail.node=None
+
+ def method1():
+ """McCabe rating: 1"""
+ pass
+
+ def method2(self, param1):
+ """McCabe rating: 18"""
+ if not param1:
+ pass
+ pass
+ if param1:
+ pass
+ else:
+ pass
+
+ pass
+
+ if param1:
+ pass
+ if param1:
+ pass
+ if param1:
+ pass
+ if param1:
+ pass
+ if param1:
+ pass
+ if param1:
+ pass
+ if param1:
+ for value in range(5):
+ pass
+
+ pass
+ for count in range(6):
+ with open('myfile') as fp:
+ count += 1
+ pass
+ pass
+ try:
+ pass
+ if not param1:
+ pass
+ else:
+ pass
+ if param1:
+ raise BaseException('Error')
+ with open('myfile2') as fp2:
+ pass
+ pass
+ finally:
+ if param1 is not None:
+ pass
+ for count2 in range(8):
+ try:
+ pass
+ except BaseException('Error2'):
+ pass
+ return param1
+
+
+for count in range(10):
+ if count == 1:
+ exit(0)
+ elif count == 2:
+ exit(1)
+ else:
+ exit(2)
+
+
+def method3(self):
+ try:
+ if True:
+ pass
+ else:
+ pass
+ finally:
+ pass
+ return True
diff --git a/tests/extensions/data/overlapping_exceptions.py b/tests/extensions/data/overlapping_exceptions.py
new file mode 100644
index 000000000..5ee50f314
--- /dev/null
+++ b/tests/extensions/data/overlapping_exceptions.py
@@ -0,0 +1,45 @@
+# pylint: disable=missing-docstring
+
+class SomeException(Exception):
+ pass
+
+class SubclassException(SomeException):
+ pass
+
+AliasException = SomeException
+
+try:
+ pass
+except (SomeException, SomeException): # [overlapping-except]
+ pass
+
+try:
+ pass
+except (SomeException, SubclassException): # [overlapping-except]
+ pass
+
+try:
+ pass
+except (SomeException, AliasException): # [overlapping-except]
+ pass
+
+try:
+ pass
+except (AliasException, SubclassException): # [overlapping-except]
+ pass
+
+try:
+ pass
+# +1:[overlapping-except, overlapping-except, overlapping-except]
+except (SomeException, AliasException, SubclassException):
+ pass
+
+try:
+ pass
+except (ArithmeticError, FloatingPointError): # [overlapping-except]
+ pass
+
+try:
+ pass
+except (ValueError, UnicodeDecodeError): # [overlapping-except]
+ pass
diff --git a/tests/extensions/data/overlapping_exceptions_py33.py b/tests/extensions/data/overlapping_exceptions_py33.py
new file mode 100644
index 000000000..16d5c30d1
--- /dev/null
+++ b/tests/extensions/data/overlapping_exceptions_py33.py
@@ -0,0 +1,18 @@
+# pylint: disable=missing-docstring
+
+import socket
+
+try:
+ pass
+except (IOError, OSError): # [overlapping-except]
+ pass
+
+try:
+ pass
+except (socket.error, OSError): # [overlapping-except]
+ pass
+
+try:
+ pass
+except (ConnectionError, socket.error): # [overlapping-except]
+ pass
diff --git a/tests/extensions/data/redefined.py b/tests/extensions/data/redefined.py
new file mode 100644
index 000000000..8829c4383
--- /dev/null
+++ b/tests/extensions/data/redefined.py
@@ -0,0 +1,85 @@
+"""Checks variable types aren't redefined within a method or a function"""
+
+# pylint: disable=too-few-public-methods,missing-docstring,unused-variable,invalid-name, useless-object-inheritance
+
+_OK = True
+
+class MyClass(object):
+
+ class Klass(object):
+ def __init__(self):
+ self.var2 = 'var'
+
+ def __init__(self):
+ self.var = True
+ self.var1 = 2
+ self.var2 = 1.
+ self.var1 = 2. # [redefined-variable-type]
+ self.a_str = "hello"
+ a_str = False
+ (a_str, b_str) = (1, 2) # no support for inference on tuple assignment
+ a_str = 2.0 if self.var else 1.0
+
+ def _getter(self):
+ return self.a_str
+ def _setter(self, val):
+ self.a_str = val
+ var2 = property(_getter, _setter)
+
+ def some_method(self):
+ def func():
+ var = 1
+ test = 'bar'
+ var = 'baz' # [redefined-variable-type]
+ self.var = 1 # the rule checks for redefinitions in the scope of a function or method
+ test = 'foo'
+ myint = 2
+ myint = False # [redefined-variable-type]
+
+_OK = "This is OK" # [redefined-variable-type]
+
+if _OK:
+ SOME_FLOAT = 1.
+
+def dummy_function():
+ return 2
+
+def other_function():
+ instance = MyClass()
+ instance = True # [redefined-variable-type]
+
+SOME_FLOAT = dummy_function() # [redefined-variable-type]
+
+A_GLOB = None
+A_GLOB = [1, 2, 3]
+
+def func2(x):
+ if x:
+ var = 'foo'
+ else:
+ var = True
+
+ if x:
+ var2 = 'foo'
+ elif not x:
+ var2 = 2
+ else:
+ pass
+
+ if x:
+ var3 = 'foo'
+ var3 = 2 # [redefined-variable-type]
+ else:
+ pass
+
+ var = 2 # [redefined-variable-type]
+
+ if x:
+ pass
+ elif not x:
+ var4 = True
+ elif _OK:
+ pass
+ else:
+ var4 = 2.
+ var4 = 'baz' # [redefined-variable-type]