Skip to content

Commit f8ba51d

Browse files
authored
Fix statements inside IF only if the END is missing (#229)
* Fix statements inside IF only if the END is missing * orelse -> or_else * Update changelog * Add config file for codespell
1 parent b5ac959 commit f8ba51d

File tree

7 files changed

+70
-12
lines changed

7 files changed

+70
-12
lines changed

.codespellrc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[codespell]
2+
ignore-words-list = ba

CHANGES.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22

33
## Unreleased
44

5+
## 1.6.2
6+
7+
### Fixes
8+
- `AddMissingEnd` transformer now properly handles IFs without indented block of code ([#226](https://github.com/MarketSquare/robotframework-tidy/issues/226))
9+
- Paths passed from command line are now checked against excluded paths (previously it was only checked when iterating over directories) ([#227](https://github.com/MarketSquare/robotframework-tidy/issues/227))
10+
11+
## 1.6.1
12+
513
### Fixes
614
- Trailing whitespace is no longer added to blank lines in multiline statements when using align transformers ([#219](https://github.com/MarketSquare/robotframework-tidy/issues/219))
715
- `*** Tasks ***` is no longer converted to `*** Test Cases ***` by NormalizeSectionHeaderName ([#218](https://github.com/MarketSquare/robotframework-tidy/issues/218))

robotidy/transformers/AddMissingEnd.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ def visit_If(self, node): # noqa
3737
self.fix_header_name(node, node.type)
3838
if node.type != Token.IF:
3939
return node
40-
node.body, outside = self.collect_inside_statements(node)
41-
if node.orelse:
42-
orelse = node.orelse
43-
while orelse.orelse:
44-
orelse = orelse.orelse
45-
orelse.body, outside_orelse = self.collect_inside_statements(orelse)
46-
outside += outside_orelse
40+
outside = []
41+
if not node.end:
42+
node.body, outside = self.collect_inside_statements(node)
43+
or_else = self.get_last_or_else(node)
44+
if or_else:
45+
or_else.body, outside_or_else = self.collect_inside_statements(or_else)
46+
outside += outside_or_else
4747
self.fix_end(node)
4848
return (node, *outside)
4949

@@ -95,7 +95,7 @@ def get_column(node):
9595
def get_last_or_else(node):
9696
if not node.orelse:
9797
return None
98-
orelse = node.orelse
99-
while orelse.orelse:
100-
orelse = orelse.orelse
101-
return orelse
98+
or_else = node.orelse
99+
while or_else.orelse:
100+
or_else = or_else.orelse
101+
return or_else

tests/atest/transformers/AddMissingEnd/expected/test.robot

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,11 @@ Mixed For and If
129129
END
130130
END
131131

132+
Bad Indent
133+
IF ${i}==1
134+
Log "one"
135+
END
136+
132137
*** Keywords ***
133138
Missing In For
134139
FOR ${x} IN foo bar
@@ -268,3 +273,14 @@ Nested For With Identical Indent
268273
Log ${x}${y}${z}
269274
END
270275
END
276+
277+
Bad Indent
278+
IF ${i}==1
279+
Log "one"
280+
END
281+
282+
IF ${i}>5
283+
Log ${i}
284+
ELSE
285+
Log ${i}+1
286+
END

tests/atest/transformers/AddMissingEnd/expected/test_selected.robot

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,11 @@ Mixed For and If
111111
IF ${condition}
112112
Log foo${x}
113113

114+
Bad Indent
115+
IF ${i}==1
116+
Log "one"
117+
END
118+
114119
*** Keywords ***
115120
Missing In For
116121
FOR ${x} IN foo bar
@@ -235,3 +240,14 @@ Nested For With Identical Indent
235240
Log ${x}${y}${z}
236241
END
237242
END
243+
244+
Bad Indent
245+
IF ${i}==1
246+
Log "one"
247+
END
248+
249+
IF ${i}>5
250+
Log ${i}
251+
ELSE
252+
Log ${i}+1
253+
END

tests/atest/transformers/AddMissingEnd/source/test.robot

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,11 @@ Mixed For and If
111111
IF ${condition}
112112
Log foo${x}
113113

114+
Bad Indent
115+
IF ${i}==1
116+
Log "one"
117+
END
118+
114119
*** Keywords ***
115120
Missing In For
116121
FOR ${x} IN foo bar
@@ -231,3 +236,14 @@ Nested For With Identical Indent
231236
Log ${x}${y}${z}
232237
END
233238
END
239+
240+
Bad Indent
241+
IF ${i}==1
242+
Log "one"
243+
END
244+
245+
IF ${i}>5
246+
Log ${i}
247+
ELSE
248+
Log ${i}+1
249+
END

tests/atest/transformers/AddMissingEnd/test_transformer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@ def test_selected(self):
1212
self.TRANSFORMER_NAME,
1313
source='test.robot',
1414
expected='test_selected.robot',
15-
config=' --startline 161 --endline 183'
15+
config=' --startline 166 --endline 188'
1616
)

0 commit comments

Comments
 (0)