diff options
author | Torsten Marek <shlomme@gmail.com> | 2014-07-25 16:01:49 +0200 |
---|---|---|
committer | Torsten Marek <shlomme@gmail.com> | 2014-07-25 16:01:49 +0200 |
commit | b161c47f9d29deaaab85bc37cabd076c01885e1f (patch) | |
tree | 2b7a96c39e798c678603fb98f22a7cca47ef6bb3 | |
parent | 511039b445415450929a6d23a6bff797f4502328 (diff) | |
download | pylint-b161c47f9d29deaaab85bc37cabd076c01885e1f.tar.gz |
Port more testcases to the new framework.
-rw-r--r-- | test/functional/cellvar_escaping_loop.py (renamed from test/input/func_loopvar_in_closure.py) | 20 | ||||
-rw-r--r-- | test/functional/cellvar_escaping_loop.txt | 8 | ||||
-rw-r--r-- | test/functional/ctor_arguments.py (renamed from test/input/func_ctor_arguments.py) | 29 | ||||
-rw-r--r-- | test/functional/undefined_variable.py (renamed from test/input/func_undefined_var.py) | 51 | ||||
-rw-r--r-- | test/functional/undefined_variable.txt | 17 | ||||
-rw-r--r-- | test/input/func_noerror_9215_lambda_arg_as_decorator.py | 29 | ||||
-rw-r--r-- | test/messages/func_ctor_arguments.txt | 17 | ||||
-rw-r--r-- | test/messages/func_loopvar_in_closure.txt | 8 | ||||
-rw-r--r-- | test/messages/func_undefined_var.txt | 14 |
9 files changed, 72 insertions, 121 deletions
diff --git a/test/input/func_loopvar_in_closure.py b/test/functional/cellvar_escaping_loop.py index 3a791d3..316bc47 100644 --- a/test/input/func_loopvar_in_closure.py +++ b/test/functional/cellvar_escaping_loop.py @@ -1,8 +1,5 @@ """Tests for loopvar-in-closure.""" -__revision__ = 0 - - def good_case(): """No problems here.""" lst = [] @@ -18,7 +15,7 @@ def good_case2(): def good_case3(): """No problems here.""" lst = [] - for i in range(10): + for i in range(10): # [unused-variable] lst.append(lambda i=i: i) @@ -42,7 +39,7 @@ def good_case6(): the value will not change any more.""" for i in range(10): print i - return lambda: i + return lambda: i # [undefined-loop-variable] def good_case7(): @@ -75,12 +72,12 @@ def bad_case(): lst = [] for i in range(10): print i - lst.append(lambda: i) + lst.append(lambda: i) # [cell-var-from-loop] def bad_case2(): """Closing over a loop variable.""" - return [lambda: i for i in range(10)] + return [lambda: i for i in range(10)] # [cell-var-from-loop] def bad_case3(): @@ -88,7 +85,7 @@ def bad_case3(): lst = [] for i in range(10): j = i * i - lst.append(lambda: j) + lst.append(lambda: j) # [cell-var-from-loop] return lst @@ -98,7 +95,7 @@ def bad_case4(): for i in range(10): def nested(): """Nested function.""" - return i**2 + return i**2 # [cell-var-from-loop] lst.append(nested) return lst @@ -119,7 +116,7 @@ def bad_case5(): the result is [9] * 10 again. """ - return (lambda: i for i in range(10)) + return (lambda: i for i in range(10)) # [cell-var-from-loop] def bad_case6(): @@ -127,6 +124,5 @@ def bad_case6(): lst = [] for i, j in zip(range(10), range(10, 20)): print j - lst.append(lambda: i) + lst.append(lambda: i) # [cell-var-from-loop] return lst - diff --git a/test/functional/cellvar_escaping_loop.txt b/test/functional/cellvar_escaping_loop.txt new file mode 100644 index 0000000..4448d44 --- /dev/null +++ b/test/functional/cellvar_escaping_loop.txt @@ -0,0 +1,8 @@ +unused-variable:18:good_case3:Unused variable 'i' +undefined-loop-variable:42:good_case6.<lambda>:Using possibly undefined loop variable 'i' +cell-var-from-loop:75:bad_case.<lambda>:Cell variable i defined in loop +cell-var-from-loop:80:bad_case2.<lambda>:Cell variable i defined in loop +cell-var-from-loop:88:bad_case3.<lambda>:Cell variable j defined in loop +cell-var-from-loop:98:bad_case4.nested:Cell variable i defined in loop +cell-var-from-loop:119:bad_case5.<lambda>:Cell variable i defined in loop +cell-var-from-loop:127:bad_case6.<lambda>:Cell variable i defined in loop diff --git a/test/input/func_ctor_arguments.py b/test/functional/ctor_arguments.py index f9a3430..7dc0a09 100644 --- a/test/input/func_ctor_arguments.py +++ b/test/functional/ctor_arguments.py @@ -1,9 +1,9 @@ """Test function argument checker on __init__ -Based on test/input/func_arguments.py +Based on test/functional/arguments.py """ # pylint: disable=C0111,R0903,W0231 -__revision__ = '' + class Class1Arg(object): def __init__(self, first_argument): @@ -32,35 +32,36 @@ class ClassNew(object): return first_argument, kwarg Class1Arg(420) -Class1Arg() -Class1Arg(1337, 347) +Class1Arg() # [no-value-for-parameter] +Class1Arg(1337, 347) # [too-many-function-args] -Class3Arg(420, 789) +Class3Arg(420, 789) # [no-value-for-parameter] +# +1:[no-value-for-parameter,no-value-for-parameter,no-value-for-parameter] Class3Arg() Class3Arg(1337, 347, 456) -Class3Arg('bab', 'bebe', None, 5.6) +Class3Arg('bab', 'bebe', None, 5.6) # [too-many-function-args] ClassDefaultArg(1, two=5) ClassDefaultArg(two=5) -Class1Arg(bob=4) -ClassDefaultArg(1, 4, coin="hello") +Class1Arg(bob=4) # [no-value-for-parameter,unexpected-keyword-arg] +ClassDefaultArg(1, 4, coin="hello") # [unexpected-keyword-arg] -ClassDefaultArg(1, one=5) +ClassDefaultArg(1, one=5) # [redundant-keyword-arg] Subclass1Arg(420) -Subclass1Arg() -Subclass1Arg(1337, 347) +Subclass1Arg() # [no-value-for-parameter] +Subclass1Arg(1337, 347) # [too-many-function-args] ClassAllArgs() ClassAllArgs(1, 2, 3, even=4, more=5) ClassMultiInheritance(1) -ClassMultiInheritance(1, 2, 3) +ClassMultiInheritance(1, 2, 3) # [too-many-function-args] ClassNew(1, kwarg=1) -ClassNew(1, 2, 3) -ClassNew(one=2) +ClassNew(1, 2, 3) # [too-many-function-args] +ClassNew(one=2) # [no-value-for-parameter,unexpected-keyword-arg] class Metaclass(type): diff --git a/test/input/func_undefined_var.py b/test/functional/undefined_variable.py index fb5fc30..25f0145 100644 --- a/test/input/func_undefined_var.py +++ b/test/functional/undefined_variable.py @@ -1,38 +1,33 @@ -"""test access to undefined variables""" +"""Test warnings about access to undefined variables.""" # pylint: disable=too-few-public-methods, no-init, no-self-use -__revision__ = '$Id:' DEFINED = 1 if DEFINED != 1: - if DEFINED in (unknown, DEFINED): + if DEFINED in (unknown, DEFINED): # [undefined-variable] DEFINED += 1 def in_method(var): """method doc""" - var = nomoreknown + var = nomoreknown # [undefined-variable] assert var -DEFINED = {DEFINED:__revision__} +DEFINED = {DEFINED:__revision__} # [undefined-variable] +# +1:[undefined-variable] DEFINED[__revision__] = OTHER = 'move this is astroid test' OTHER += '$' -def bad_default(var, default=unknown2): +def bad_default(var, default=unknown2): # [undefined-variable] """function with defaut arg's value set to an unexistant name""" print var, default - print xxxx - print xxxx #see story #1000 - augvar += 1 - del vardel - -# Warning for Attribute access to undefinde attributes ? -#class Attrs(object): - #"""dummy class for wrong attribute access""" -#AOU = Attrs() -#AOU.number *= 1.3 -#del AOU.badattr + print xxxx # [undefined-variable] + augvar += 1 # [undefined-variable,unused-variable] + del vardel # [undefined-variable] + +LMBD = lambda x, y=doesnotexist: x+y # [undefined-variable] +LMBD2 = lambda x, y: x+z # [undefined-variable] try: POUET # don't catch me @@ -41,19 +36,19 @@ except NameError: try: POUETT # don't catch me -except Exception: # pylint:disable = W0703 +except Exception: # pylint:disable = broad-except POUETT = 'something' try: POUETTT # don't catch me -except: # pylint:disable = W0702 +except: # pylint:disable = bare-except POUETTT = 'something' print POUET, POUETT, POUETTT try: - PLOUF # catch me + PLOUF # [used-before-assignment] except ValueError: PLOUF = 'something' @@ -62,7 +57,7 @@ print PLOUF def if_branch_test(something): """hop""" if something == 0: - if xxx == 1: + if xxx == 1: # [used-before-assignment] pass else: print xxx @@ -77,30 +72,32 @@ def decorator(arg): @decorator(arg=[i * 2 for i in range(15)]) def func1(): """A function with a decorator that contains a listcomp.""" - pass @decorator(arg=(i * 2 for i in range(15))) def func2(): """A function with a decorator that contains a genexpr.""" - pass + +@decorator(lambda x: x > 0) +def main(): + """A function with a decorator that contains a lambda.""" # Test shared scope. -def test_arguments(arg=TestClass): +def test_arguments(arg=TestClass): # [used-before-assignment] """ TestClass isn't defined yet. """ return arg -class TestClass(Ancestor): +class TestClass(Ancestor): # [used-before-assignment] """ contains another class, which uses an undefined ancestor. """ - class MissingAncestor(Ancestor1): + class MissingAncestor(Ancestor1): # [used-before-assignment] """ no op """ def test1(self): """ It should trigger here, because the two classes have the same scope. """ - class UsingBeforeDefinition(Empty): + class UsingBeforeDefinition(Empty): # [used-before-assignment] """ uses Empty before definition """ class Empty(object): """ no op """ diff --git a/test/functional/undefined_variable.txt b/test/functional/undefined_variable.txt new file mode 100644 index 0000000..5695be1 --- /dev/null +++ b/test/functional/undefined_variable.txt @@ -0,0 +1,17 @@ +undefined-variable:7::Undefined variable 'unknown' +undefined-variable:13:in_method:Undefined variable 'nomoreknown' +undefined-variable:16::Undefined variable '__revision__' +undefined-variable:18::Undefined variable '__revision__' +undefined-variable:22:bad_default:Undefined variable 'unknown2' +undefined-variable:25:bad_default:Undefined variable 'xxxx' +undefined-variable:26:bad_default:Undefined variable 'augvar' +unused-variable:26:bad_default:Unused variable 'augvar' +undefined-variable:27:bad_default:Undefined variable 'vardel' +undefined-variable:29:<lambda>:Undefined variable 'doesnotexist' +undefined-variable:30:<lambda>:Undefined variable 'z' +used-before-assignment:51::Using variable 'PLOUF' before assignment +used-before-assignment:60:if_branch_test:Using variable 'xxx' before assignment +used-before-assignment:86:test_arguments:Using variable 'TestClass' before assignment +used-before-assignment:90:TestClass:Using variable 'Ancestor' before assignment +used-before-assignment:93:TestClass.MissingAncestor:Using variable 'Ancestor1' before assignment +used-before-assignment:100:TestClass.test1.UsingBeforeDefinition:Using variable 'Empty' before assignment diff --git a/test/input/func_noerror_9215_lambda_arg_as_decorator.py b/test/input/func_noerror_9215_lambda_arg_as_decorator.py deleted file mode 100644 index cbbc747..0000000 --- a/test/input/func_noerror_9215_lambda_arg_as_decorator.py +++ /dev/null @@ -1,29 +0,0 @@ -"""Demonstrate false undefined variable for lambda functions. - -http://www.logilab.org/ticket/9215 -""" - -__revision__ = None - -def decorator(expr): - """Function returning decorator.""" - def func(function): - """Pass-thru decorator.""" - return function - # use expr - expr(0) - return func - -# this lambda is flagged -# E0602: 16:main.<lambda>: Undefined variable 'x' -@decorator(lambda x: x > 0) -def main(): - """Dummy function.""" - # this one is not flagged - decorator(lambda y: y > 0) - -if __name__ == "__main__": - main() - - - diff --git a/test/messages/func_ctor_arguments.txt b/test/messages/func_ctor_arguments.txt deleted file mode 100644 index b8d62b1..0000000 --- a/test/messages/func_ctor_arguments.txt +++ /dev/null @@ -1,17 +0,0 @@ -E: 35: No value for argument 'first_argument' in constructor call -E: 36: Too many positional arguments for constructor call -E: 38: No value for argument 'third_argument' in constructor call -E: 39: No value for argument 'first_argument' in constructor call -E: 39: No value for argument 'second_argument' in constructor call -E: 39: No value for argument 'third_argument' in constructor call -E: 41: Too many positional arguments for constructor call -E: 46: No value for argument 'first_argument' in constructor call -E: 46: Unexpected keyword argument 'bob' in constructor call -E: 47: Unexpected keyword argument 'coin' in constructor call -E: 49: Argument 'one' passed by position and keyword in constructor call -E: 52: No value for argument 'first_argument' in constructor call -E: 53: Too many positional arguments for constructor call -E: 59: Too many positional arguments for constructor call -E: 62: Too many positional arguments for constructor call -E: 63: No value for argument 'first_argument' in constructor call -E: 63: Unexpected keyword argument 'one' in constructor call diff --git a/test/messages/func_loopvar_in_closure.txt b/test/messages/func_loopvar_in_closure.txt deleted file mode 100644 index 5b068f4..0000000 --- a/test/messages/func_loopvar_in_closure.txt +++ /dev/null @@ -1,8 +0,0 @@ -W: 21:good_case3: Unused variable 'i' -W: 45:good_case6.<lambda>: Using possibly undefined loop variable 'i' -W: 78:bad_case.<lambda>: Cell variable i defined in loop -W: 83:bad_case2.<lambda>: Cell variable i defined in loop -W: 91:bad_case3.<lambda>: Cell variable j defined in loop -W:101:bad_case4.nested: Cell variable i defined in loop -W:122:bad_case5.<lambda>: Cell variable i defined in loop -W:130:bad_case6.<lambda>: Cell variable i defined in loop diff --git a/test/messages/func_undefined_var.txt b/test/messages/func_undefined_var.txt deleted file mode 100644 index 5505156..0000000 --- a/test/messages/func_undefined_var.txt +++ /dev/null @@ -1,14 +0,0 @@ -E: 8: Undefined variable 'unknown' -E: 14:in_method: Undefined variable 'nomoreknown' -E: 22:bad_default: Undefined variable 'unknown2' -E: 25:bad_default: Undefined variable 'xxxx' -E: 26:bad_default: Undefined variable 'xxxx' -E: 27:bad_default: Undefined variable 'augvar' -E: 28:bad_default: Undefined variable 'vardel' -E: 56: Using variable 'PLOUF' before assignment -E: 65:if_branch_test: Using variable 'xxx' before assignment -E: 89:test_arguments: Using variable 'TestClass' before assignment -E: 93:TestClass: Using variable 'Ancestor' before assignment -E: 96:TestClass.MissingAncestor: Using variable 'Ancestor1' before assignment -E:103:TestClass.test1.UsingBeforeDefinition: Using variable 'Empty' before assignment -W: 27:bad_default: Unused variable 'augvar' |