summaryrefslogtreecommitdiff
path: root/tests/functional/b/bad_continuation.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/functional/b/bad_continuation.py')
-rw-r--r--tests/functional/b/bad_continuation.py232
1 files changed, 232 insertions, 0 deletions
diff --git a/tests/functional/b/bad_continuation.py b/tests/functional/b/bad_continuation.py
new file mode 100644
index 000000000..1c73a1122
--- /dev/null
+++ b/tests/functional/b/bad_continuation.py
@@ -0,0 +1,232 @@
+"""Regression test case for bad-continuation."""
+# pylint: disable=print-statement,implicit-str-concat-in-sequence,using-constant-test,missing-docstring,wrong-import-position
+# Various alignment for brackets
+from __future__ import print_function
+
+LIST0 = [
+ 1, 2, 3
+]
+LIST1 = [
+ 1, 2, 3
+ ]
+LIST2 = [
+ 1, 2, 3
+ ] # [bad-continuation]
+
+# Alignment inside literals
+W0 = [1, 2, 3,
+ 4, 5, 6,
+ 7, # [bad-continuation]
+ 8, 9, 10,
+ 11, 12, 13,
+ # and a comment
+ 14, 15, 16]
+
+W1 = {
+ 'a': 1,
+ 'b': 2, # [bad-continuation]
+ 'c': 3,
+ }
+
+W2 = {
+ 'a': 1,
+ 'b': 2, # [bad-continuation]
+ 'c': 3,
+ }
+
+W2 = ['some', 'contents' # with a continued comment that may be aligned
+ # under the previous comment (optionally)
+ 'and',
+ 'more', # but this
+ # [bad-continuation] is not accepted
+ 'contents', # [bad-continuation] nor this.
+ ]
+
+# Values in dictionaries should be indented 4 spaces further if they are on a
+# different line than their key
+W4 = {
+ 'key1':
+ 'value1', # Grandfather in the old style
+ 'key2':
+ 'value2', # [bad-continuation]
+ 'key3':
+ 'value3', # Comma here
+ }
+
+# And should follow the same rules as continuations within parens
+W5 = {
+ 'key1': 'long value'
+ 'long continuation',
+ 'key2': 'breaking'
+ 'wrong', # [bad-continuation]
+ 'key3': 2*(
+ 2+2),
+ 'key4': ('parenthesis',
+ 'continuation') # No comma here
+ }
+
+# Allow values to line up with their keys when the key is next to the brace
+W6 = {'key1':
+ 'value1',
+ 'key2':
+ 'value2',
+ }
+
+# Or allow them to be indented
+W7 = {'key1':
+ 'value1',
+ 'key2':
+ 'value2'
+ }
+
+# Bug that caused a warning on the previous two cases permitted these odd
+# incorrect indentations
+W8 = {'key1':
+'value1', # [bad-continuation]
+ }
+
+W9 = {'key1':
+ 'value1', # [bad-continuation]
+ }
+
+# Alignment of arguments in function definitions
+def continue1(some_arg,
+ some_other_arg):
+ """A function with well-aligned arguments."""
+ print(some_arg, some_other_arg)
+
+
+def continue2(
+ some_arg,
+ some_other_arg):
+ """A function with well-aligned arguments."""
+ print(some_arg, some_other_arg)
+
+def continue3(
+ some_arg, # [bad-continuation]
+ some_other_arg): # [bad-continuation]
+ """A function with misaligned arguments"""
+ print(some_arg, some_other_arg)
+
+def continue4( # pylint:disable=missing-docstring
+ arg1,
+ arg2): print(arg1, arg2)
+
+
+def callee(*args):
+ """noop"""
+ print(args)
+
+
+callee(
+ "a",
+ "b"
+ )
+
+callee("a",
+ "b") # [bad-continuation]
+
+callee(5, {'a': 'b',
+ 'c': 'd'})
+
+if (
+ 1
+ ): pass
+
+if (
+ 1
+): pass
+if (
+ 1
+ ): pass # [bad-continuation]
+
+if (1 and
+ 2): # [bad-continuation]
+ pass
+
+while (1 and
+ 2):
+ pass
+
+while (1 and
+ 2 and # [bad-continuation]
+ 3):
+ pass
+
+if (
+ 2): pass # [bad-continuation]
+
+if (1 or
+ 2 or
+ 3): pass
+
+if (1 or
+ 2 or # [bad-continuation]
+ 3): print(1, 2)
+
+if (1 and
+ 2): pass # [bad-continuation]
+
+if (
+ 2): pass
+
+if (
+ 2): # [bad-continuation]
+ pass
+
+L1 = (lambda a,
+ b: a + b)
+
+if not (1 and
+ 2):
+ print(3)
+
+if not (1 and
+ 2): # [bad-continuation]
+ print(3)
+
+continue2("foo",
+ some_other_arg="this "
+ "is "
+ "fine")
+
+from contextlib import contextmanager
+@contextmanager
+def mycontext(*args):
+ yield args
+
+with mycontext(
+ "this is",
+ "great stuff",
+ "mane"):
+ pass
+
+# pylint: disable=using-constant-test
+# More indentation included to distinguish this from the rest.
+def long_function_name(
+ var_one, var_two, var_three,
+ var_four):
+ print(var_one, var_two, var_three, var_four)
+
+
+def short_func_name(first, second, third):
+ # Add some extra indentation on the conditional continuation line.
+ if (first
+ and second == first == 'some_big_long_statement_that_should_not_trigger'):
+ third()
+
+
+# Some normal multi-line statements with double-indented continuation lines.
+LARGE_COLLECTION = [
+ "spam",
+ "eggs",
+ "beans",
+ ]
+
+long_function_name(
+ "1", "2", "3", "4")
+
+CONCATENATED_TEXT = (
+ "spam"
+ "eggs"
+ "beans")