Skip to content

Commit 13a6196

Browse files
committed
fix Robotidy adding extra new line if Test Case or Keyword is last in the file
1 parent 787c158 commit 13a6196

File tree

6 files changed

+45
-12
lines changed

6 files changed

+45
-12
lines changed

robotidy/cli.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,6 @@ def cli(
273273
list_transformers: bool,
274274
describe_transformer: Optional[str]
275275
):
276-
click.echo(overwrite)
277276
if list_transformers:
278277
transformers = load_transformers(None)
279278
click.echo('Run --describe-transformer <transformer_name> to get more details. Transformers:')
@@ -310,5 +309,4 @@ def cli(
310309
check=check
311310
)
312311
status = tidy.transform_files()
313-
click.echo(status)
314312
ctx.exit(status)

robotidy/transformers/NormalizeNewLines.py

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33

44
from robot.api.parsing import (
55
ModelTransformer,
6-
EmptyLine
6+
EmptyLine,
7+
Token
78
)
89

910

@@ -41,7 +42,6 @@ def visit_Section(self, node): # noqa
4142
self.trim_trailing_empty_lines(node)
4243
empty_line = EmptyLine.from_params()
4344
if node is self.last_section:
44-
node.body.append(empty_line)
4545
return self.generic_visit(node)
4646
node.body.extend([empty_line] * self.section_lines)
4747
return self.generic_visit(node)
@@ -57,23 +57,31 @@ def visit_KeywordSection(self, node): # noqa
5757
def visit_TestCase(self, node): # noqa
5858
self.trim_leading_empty_lines(node)
5959
self.trim_trailing_empty_lines(node)
60-
if node is self.last_test:
61-
return node
62-
if not self.templated:
60+
if node is not self.last_test and not self.templated:
6361
node.body.extend([EmptyLine.from_params()] * self.test_case_lines)
64-
return node
62+
return self.generic_visit(node)
6563

6664
def visit_Keyword(self, node): # noqa
6765
self.trim_leading_empty_lines(node)
6866
self.trim_trailing_empty_lines(node)
69-
if node is self.last_keyword:
70-
return node
71-
node.body.extend([EmptyLine.from_params()] * self.keyword_lines)
67+
if node is not self.last_keyword:
68+
node.body.extend([EmptyLine.from_params()] * self.keyword_lines)
69+
return self.generic_visit(node)
70+
71+
def visit_Statement(self, node): # noqa
72+
tokens = []
73+
for line in node.lines:
74+
if line[-1].type == Token.EOL:
75+
line[-1].value = '\n'
76+
tokens.extend(line)
77+
node.tokens = tokens
7278
return node
7379

7480
@staticmethod
7581
def trim_trailing_empty_lines(node):
76-
while hasattr(node, 'body') and node.body and isinstance(node.body[-1], EmptyLine):
82+
if not hasattr(node, 'body'):
83+
return
84+
while node.body and isinstance(node.body[-1], EmptyLine):
7785
node.body.pop()
7886

7987
@staticmethod
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
*** Test Cases ***
2+
Values Are Equal Fails
3+
Log 1111
4+
5+
Values Are Equal Fails
6+
Log 1111
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
*** Test Cases ***
2+
Values Are Equal Fails
3+
Log 1111
4+
5+
Values Are Equal Fails
6+
Log 1111
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
*** Test Cases ***
2+
Values Are Equal Fails
3+
Log 1111
4+
5+
Values Are Equal Fails
6+
Log 1111

tests/atest/transformers/test_transformers.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,15 @@ def test_templated_tests_separated(self):
257257
config=':separate_templated_tests=True'
258258
)
259259

260+
@pytest.mark.parametrize('lines_at_the_end', [0, 1])
261+
def test_test_case_last(self, lines_at_the_end):
262+
run_tidy_and_compare(
263+
self.TRANSFORMER_NAME,
264+
sources=[f'test_case_last_{lines_at_the_end}_lines.robot'],
265+
expected=['test_case_last.robot']
266+
)
267+
268+
260269

261270
@patch('robotidy.app.Robotidy.save_model', new=save_tmp_model)
262271
class TestSplitTooLongLine:

0 commit comments

Comments
 (0)