From b8b70bb8562646e429793abc04faf5746fd7733f Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Mon, 9 Oct 2017 22:33:15 +0300 Subject: [PATCH] PY-12008 Add a bunch of tests covering various cases of malformed if statements --- .../formatter/multilineElifCondition.py | 9 ++++ .../multilineElifConditionInParentheses.py | 9 ++++ ...ltilineElifConditionInParentheses_after.py | 9 ++++ .../formatter/multilineElifCondition_after.py | 9 ++++ .../formatter/multilineIfConditionComplex.py | 9 ++++ .../multilineIfConditionComplex_after.py | 9 ++++ ...ineIfConditionInParenthesesKeywordAtEnd.py | 3 ++ ...sesKeywordAtEndSecondOperandIsReference.py | 3 ++ ...wordAtEndSecondOperandIsReference_after.py | 3 ++ ...onditionInParenthesesKeywordAtEnd_after.py | 3 ++ ...eIfConditionInParenthesesKeywordAtStart.py | 3 ++ ...ditionInParenthesesKeywordAtStart_after.py | 3 ++ ...nditionInParenthesesNegatedKeywordAtEnd.py | 3 ++ ...nInParenthesesNegatedKeywordAtEnd_after.py | 3 ++ ...ConditionInParenthesesNestedExpressions.py | 4 ++ ...ionInParenthesesNestedExpressions_after.py | 4 ++ .../multilineIfConditionKeywordAtEnd.py | 3 ++ .../multilineIfConditionKeywordAtEnd_after.py | 3 ++ .../multilineIfConditionKeywordAtStart.py | 3 ++ ...ultilineIfConditionKeywordAtStart_after.py | 3 ++ ...eIfConditionLessComparisonsKeywordAtEnd.py | 3 ++ ...ditionLessComparisonsKeywordAtEnd_after.py | 3 ++ .../multilineIfConditionNestedExpressions.py | 4 ++ ...ilineIfConditionNestedExpressions_after.py | 4 ++ .../com/jetbrains/python/PyFormatterTest.java | 50 +++++++++++++++++++ 25 files changed, 162 insertions(+) create mode 100644 python/testData/formatter/multilineElifCondition.py create mode 100644 python/testData/formatter/multilineElifConditionInParentheses.py create mode 100644 python/testData/formatter/multilineElifConditionInParentheses_after.py create mode 100644 python/testData/formatter/multilineElifCondition_after.py create mode 100644 python/testData/formatter/multilineIfConditionComplex.py create mode 100644 python/testData/formatter/multilineIfConditionComplex_after.py create mode 100644 python/testData/formatter/multilineIfConditionInParenthesesKeywordAtEnd.py create mode 100644 python/testData/formatter/multilineIfConditionInParenthesesKeywordAtEndSecondOperandIsReference.py create mode 100644 python/testData/formatter/multilineIfConditionInParenthesesKeywordAtEndSecondOperandIsReference_after.py create mode 100644 python/testData/formatter/multilineIfConditionInParenthesesKeywordAtEnd_after.py create mode 100644 python/testData/formatter/multilineIfConditionInParenthesesKeywordAtStart.py create mode 100644 python/testData/formatter/multilineIfConditionInParenthesesKeywordAtStart_after.py create mode 100644 python/testData/formatter/multilineIfConditionInParenthesesNegatedKeywordAtEnd.py create mode 100644 python/testData/formatter/multilineIfConditionInParenthesesNegatedKeywordAtEnd_after.py create mode 100644 python/testData/formatter/multilineIfConditionInParenthesesNestedExpressions.py create mode 100644 python/testData/formatter/multilineIfConditionInParenthesesNestedExpressions_after.py create mode 100644 python/testData/formatter/multilineIfConditionKeywordAtEnd.py create mode 100644 python/testData/formatter/multilineIfConditionKeywordAtEnd_after.py create mode 100644 python/testData/formatter/multilineIfConditionKeywordAtStart.py create mode 100644 python/testData/formatter/multilineIfConditionKeywordAtStart_after.py create mode 100644 python/testData/formatter/multilineIfConditionLessComparisonsKeywordAtEnd.py create mode 100644 python/testData/formatter/multilineIfConditionLessComparisonsKeywordAtEnd_after.py create mode 100644 python/testData/formatter/multilineIfConditionNestedExpressions.py create mode 100644 python/testData/formatter/multilineIfConditionNestedExpressions_after.py diff --git a/python/testData/formatter/multilineElifCondition.py b/python/testData/formatter/multilineElifCondition.py new file mode 100644 index 000000000000..96a48ac0b57a --- /dev/null +++ b/python/testData/formatter/multilineElifCondition.py @@ -0,0 +1,9 @@ +if foo and \ + bar == 42: + pass +elif foo and \ + bar: + pass +elif foo and \ + bar == 24: + pass \ No newline at end of file diff --git a/python/testData/formatter/multilineElifConditionInParentheses.py b/python/testData/formatter/multilineElifConditionInParentheses.py new file mode 100644 index 000000000000..03e77609ddae --- /dev/null +++ b/python/testData/formatter/multilineElifConditionInParentheses.py @@ -0,0 +1,9 @@ +if (foo and + bar == 42): + pass +elif (foo and + bar): + pass +elif (foo and + bar == 24): + pass diff --git a/python/testData/formatter/multilineElifConditionInParentheses_after.py b/python/testData/formatter/multilineElifConditionInParentheses_after.py new file mode 100644 index 000000000000..03e77609ddae --- /dev/null +++ b/python/testData/formatter/multilineElifConditionInParentheses_after.py @@ -0,0 +1,9 @@ +if (foo and + bar == 42): + pass +elif (foo and + bar): + pass +elif (foo and + bar == 24): + pass diff --git a/python/testData/formatter/multilineElifCondition_after.py b/python/testData/formatter/multilineElifCondition_after.py new file mode 100644 index 000000000000..fe7b29f94299 --- /dev/null +++ b/python/testData/formatter/multilineElifCondition_after.py @@ -0,0 +1,9 @@ +if foo and \ + bar == 42: + pass +elif foo and \ + bar: + pass +elif foo and \ + bar == 24: + pass diff --git a/python/testData/formatter/multilineIfConditionComplex.py b/python/testData/formatter/multilineIfConditionComplex.py new file mode 100644 index 000000000000..8111c309c19a --- /dev/null +++ b/python/testData/formatter/multilineIfConditionComplex.py @@ -0,0 +1,9 @@ +a = b = c = 0 +if (a and b and c or + a and b or + a or + a and b or + a and b and c or + a and b or + a): + pass \ No newline at end of file diff --git a/python/testData/formatter/multilineIfConditionComplex_after.py b/python/testData/formatter/multilineIfConditionComplex_after.py new file mode 100644 index 000000000000..d64da0f9c7c8 --- /dev/null +++ b/python/testData/formatter/multilineIfConditionComplex_after.py @@ -0,0 +1,9 @@ +a = b = c = 0 +if (a and b and c or + a and b or + a or + a and b or + a and b and c or + a and b or + a): + pass diff --git a/python/testData/formatter/multilineIfConditionInParenthesesKeywordAtEnd.py b/python/testData/formatter/multilineIfConditionInParenthesesKeywordAtEnd.py new file mode 100644 index 000000000000..6ca0307aa913 --- /dev/null +++ b/python/testData/formatter/multilineIfConditionInParenthesesKeywordAtEnd.py @@ -0,0 +1,3 @@ +if (foo is None and + bar == 42): + pass \ No newline at end of file diff --git a/python/testData/formatter/multilineIfConditionInParenthesesKeywordAtEndSecondOperandIsReference.py b/python/testData/formatter/multilineIfConditionInParenthesesKeywordAtEndSecondOperandIsReference.py new file mode 100644 index 000000000000..e78a161d4dd4 --- /dev/null +++ b/python/testData/formatter/multilineIfConditionInParenthesesKeywordAtEndSecondOperandIsReference.py @@ -0,0 +1,3 @@ +if (foo == 42 and + bar): + pass \ No newline at end of file diff --git a/python/testData/formatter/multilineIfConditionInParenthesesKeywordAtEndSecondOperandIsReference_after.py b/python/testData/formatter/multilineIfConditionInParenthesesKeywordAtEndSecondOperandIsReference_after.py new file mode 100644 index 000000000000..2e2ac93889fb --- /dev/null +++ b/python/testData/formatter/multilineIfConditionInParenthesesKeywordAtEndSecondOperandIsReference_after.py @@ -0,0 +1,3 @@ +if (foo == 42 and + bar): + pass diff --git a/python/testData/formatter/multilineIfConditionInParenthesesKeywordAtEnd_after.py b/python/testData/formatter/multilineIfConditionInParenthesesKeywordAtEnd_after.py new file mode 100644 index 000000000000..a872f58f83da --- /dev/null +++ b/python/testData/formatter/multilineIfConditionInParenthesesKeywordAtEnd_after.py @@ -0,0 +1,3 @@ +if (foo is None and + bar == 42): + pass diff --git a/python/testData/formatter/multilineIfConditionInParenthesesKeywordAtStart.py b/python/testData/formatter/multilineIfConditionInParenthesesKeywordAtStart.py new file mode 100644 index 000000000000..3fcb6911b0a6 --- /dev/null +++ b/python/testData/formatter/multilineIfConditionInParenthesesKeywordAtStart.py @@ -0,0 +1,3 @@ +if (foo is None + and bar == 42): + pass \ No newline at end of file diff --git a/python/testData/formatter/multilineIfConditionInParenthesesKeywordAtStart_after.py b/python/testData/formatter/multilineIfConditionInParenthesesKeywordAtStart_after.py new file mode 100644 index 000000000000..085487a984ce --- /dev/null +++ b/python/testData/formatter/multilineIfConditionInParenthesesKeywordAtStart_after.py @@ -0,0 +1,3 @@ +if (foo is None + and bar == 42): + pass diff --git a/python/testData/formatter/multilineIfConditionInParenthesesNegatedKeywordAtEnd.py b/python/testData/formatter/multilineIfConditionInParenthesesNegatedKeywordAtEnd.py new file mode 100644 index 000000000000..bae4f95fff42 --- /dev/null +++ b/python/testData/formatter/multilineIfConditionInParenthesesNegatedKeywordAtEnd.py @@ -0,0 +1,3 @@ +if not (foo == 42 or + bar == 42): + pass \ No newline at end of file diff --git a/python/testData/formatter/multilineIfConditionInParenthesesNegatedKeywordAtEnd_after.py b/python/testData/formatter/multilineIfConditionInParenthesesNegatedKeywordAtEnd_after.py new file mode 100644 index 000000000000..740a87138cd1 --- /dev/null +++ b/python/testData/formatter/multilineIfConditionInParenthesesNegatedKeywordAtEnd_after.py @@ -0,0 +1,3 @@ +if not (foo == 42 or + bar == 42): + pass diff --git a/python/testData/formatter/multilineIfConditionInParenthesesNestedExpressions.py b/python/testData/formatter/multilineIfConditionInParenthesesNestedExpressions.py new file mode 100644 index 000000000000..9741aeac497d --- /dev/null +++ b/python/testData/formatter/multilineIfConditionInParenthesesNestedExpressions.py @@ -0,0 +1,4 @@ +if (foo == 42 or + bar == 42 and + baz == 42): + pass diff --git a/python/testData/formatter/multilineIfConditionInParenthesesNestedExpressions_after.py b/python/testData/formatter/multilineIfConditionInParenthesesNestedExpressions_after.py new file mode 100644 index 000000000000..9741aeac497d --- /dev/null +++ b/python/testData/formatter/multilineIfConditionInParenthesesNestedExpressions_after.py @@ -0,0 +1,4 @@ +if (foo == 42 or + bar == 42 and + baz == 42): + pass diff --git a/python/testData/formatter/multilineIfConditionKeywordAtEnd.py b/python/testData/formatter/multilineIfConditionKeywordAtEnd.py new file mode 100644 index 000000000000..d2353d194f9f --- /dev/null +++ b/python/testData/formatter/multilineIfConditionKeywordAtEnd.py @@ -0,0 +1,3 @@ +if foo is None and \ + bar == 42: + pass \ No newline at end of file diff --git a/python/testData/formatter/multilineIfConditionKeywordAtEnd_after.py b/python/testData/formatter/multilineIfConditionKeywordAtEnd_after.py new file mode 100644 index 000000000000..99d6027afb08 --- /dev/null +++ b/python/testData/formatter/multilineIfConditionKeywordAtEnd_after.py @@ -0,0 +1,3 @@ +if foo is None and \ + bar == 42: + pass diff --git a/python/testData/formatter/multilineIfConditionKeywordAtStart.py b/python/testData/formatter/multilineIfConditionKeywordAtStart.py new file mode 100644 index 000000000000..5200c336f4d8 --- /dev/null +++ b/python/testData/formatter/multilineIfConditionKeywordAtStart.py @@ -0,0 +1,3 @@ +if foo is None \ + and bar == 42: + pass \ No newline at end of file diff --git a/python/testData/formatter/multilineIfConditionKeywordAtStart_after.py b/python/testData/formatter/multilineIfConditionKeywordAtStart_after.py new file mode 100644 index 000000000000..8229c90d7b74 --- /dev/null +++ b/python/testData/formatter/multilineIfConditionKeywordAtStart_after.py @@ -0,0 +1,3 @@ +if foo is None \ + and bar == 42: + pass diff --git a/python/testData/formatter/multilineIfConditionLessComparisonsKeywordAtEnd.py b/python/testData/formatter/multilineIfConditionLessComparisonsKeywordAtEnd.py new file mode 100644 index 000000000000..08dd0c08a936 --- /dev/null +++ b/python/testData/formatter/multilineIfConditionLessComparisonsKeywordAtEnd.py @@ -0,0 +1,3 @@ +if 1 < 4 and \ + 5 < 7: # WRONG again, too many spaces + pass diff --git a/python/testData/formatter/multilineIfConditionLessComparisonsKeywordAtEnd_after.py b/python/testData/formatter/multilineIfConditionLessComparisonsKeywordAtEnd_after.py new file mode 100644 index 000000000000..08dd0c08a936 --- /dev/null +++ b/python/testData/formatter/multilineIfConditionLessComparisonsKeywordAtEnd_after.py @@ -0,0 +1,3 @@ +if 1 < 4 and \ + 5 < 7: # WRONG again, too many spaces + pass diff --git a/python/testData/formatter/multilineIfConditionNestedExpressions.py b/python/testData/formatter/multilineIfConditionNestedExpressions.py new file mode 100644 index 000000000000..2f514d82e762 --- /dev/null +++ b/python/testData/formatter/multilineIfConditionNestedExpressions.py @@ -0,0 +1,4 @@ +if foo == 42 or \ + bar == 42 and \ + baz == 42: + pass diff --git a/python/testData/formatter/multilineIfConditionNestedExpressions_after.py b/python/testData/formatter/multilineIfConditionNestedExpressions_after.py new file mode 100644 index 000000000000..2f514d82e762 --- /dev/null +++ b/python/testData/formatter/multilineIfConditionNestedExpressions_after.py @@ -0,0 +1,4 @@ +if foo == 42 or \ + bar == 42 and \ + baz == 42: + pass diff --git a/python/testSrc/com/jetbrains/python/PyFormatterTest.java b/python/testSrc/com/jetbrains/python/PyFormatterTest.java index 6b873248bf66..cd68175d0b41 100644 --- a/python/testSrc/com/jetbrains/python/PyFormatterTest.java +++ b/python/testSrc/com/jetbrains/python/PyFormatterTest.java @@ -857,6 +857,56 @@ public class PyFormatterTest extends PyTestCase { doTest(); } + public void testMultilineIfConditionKeywordAtEnd() { + doTest(); + } + + // PY-21328 + public void testMultilineIfConditionLessComparisonsKeywordAtEnd() { + doTest(); + } + + public void testMultilineIfConditionKeywordAtStart() { + doTest(); + } + + public void testMultilineIfConditionInParenthesesKeywordAtEnd() { + doTest(); + } + + public void testMultilineIfConditionInParenthesesNegatedKeywordAtEnd() { + doTest(); + } + + public void testMultilineIfConditionInParenthesesKeywordAtEndSecondOperandIsReference() { + doTest(); + } + + public void testMultilineIfConditionInParenthesesKeywordAtStart() { + doTest(); + } + + public void testMultilineIfConditionNestedExpressions() { + doTest(); + } + + public void testMultilineIfConditionInParenthesesNestedExpressions() { + doTest(); + } + + public void testMultilineElifCondition() { + doTest(); + } + + public void testMultilineElifConditionInParentheses() { + doTest(); + } + + // PY-22035 + public void testMultilineIfConditionComplex() { + doTest(); + } + public void testVariableAnnotations() { runWithLanguageLevel(LanguageLevel.PYTHON36, this::doTest); }