diff options
Diffstat (limited to 'tests/functional/u/useless/useless_else_on_loop.py')
-rw-r--r-- | tests/functional/u/useless/useless_else_on_loop.py | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/tests/functional/u/useless/useless_else_on_loop.py b/tests/functional/u/useless/useless_else_on_loop.py new file mode 100644 index 000000000..d686f4658 --- /dev/null +++ b/tests/functional/u/useless/useless_else_on_loop.py @@ -0,0 +1,103 @@ +"""Check for else branches on loops with break and return only.""" +from __future__ import print_function +__revision__ = 0 + +def test_return_for(): + """else + return is not accetable.""" + for i in range(10): + if i % 2: + return i + else: # [useless-else-on-loop] + print('math is broken') + return None + +def test_return_while(): + """else + return is not accetable.""" + while True: + return 1 + else: # [useless-else-on-loop] + print('math is broken') + return None + + +while True: + def short_fun(): + """A function with a loop.""" + for _ in range(10): + break +else: # [useless-else-on-loop] + print('or else!') + + +while True: + while False: + break +else: # [useless-else-on-loop] + print('or else!') + +for j in range(10): + pass +else: # [useless-else-on-loop] + print('fat chance') + for j in range(10): + break + + +def test_return_for2(): + """no false positive for break in else + + https://bitbucket.org/logilab/pylint/issue/117/useless-else-on-loop-false-positives + """ + for i in range(10): + for _ in range(i): + if i % 2: + break + else: + break + else: + print('great math') + + +def test_break_in_orelse_deep(): + """no false positive for break in else deeply nested + """ + for _ in range(10): + if 1 < 2: + for _ in range(3): + if 3 < 2: + break + else: + break + else: + return True + return False + + +def test_break_in_orelse_deep2(): + """should rise a useless-else-on-loop message, as the break statement is only + for the inner for loop + """ + for _ in range(10): + if 1 < 2: + for _ in range(3): + if 3 < 2: + break + else: + print("all right") + else: # [useless-else-on-loop] + return True + return False + + +def test_break_in_orelse_deep3(): + """no false positive for break deeply nested in else + """ + for _ in range(10): + for _ in range(3): + pass + else: + if 1 < 2: + break + else: + return True + return False |