Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 18 additions & 10 deletions robotidy/transformers/NormalizeNewLines.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

from robot.api.parsing import (
ModelTransformer,
EmptyLine
EmptyLine,
Token
)


Expand Down Expand Up @@ -41,7 +42,6 @@ def visit_Section(self, node): # noqa
self.trim_trailing_empty_lines(node)
empty_line = EmptyLine.from_params()
if node is self.last_section:
node.body.append(empty_line)
return self.generic_visit(node)
node.body.extend([empty_line] * self.section_lines)
return self.generic_visit(node)
Expand All @@ -57,23 +57,31 @@ def visit_KeywordSection(self, node): # noqa
def visit_TestCase(self, node): # noqa
self.trim_leading_empty_lines(node)
self.trim_trailing_empty_lines(node)
if node is self.last_test:
return node
if not self.templated:
if node is not self.last_test and not self.templated:
node.body.extend([EmptyLine.from_params()] * self.test_case_lines)
return node
return self.generic_visit(node)

def visit_Keyword(self, node): # noqa
self.trim_leading_empty_lines(node)
self.trim_trailing_empty_lines(node)
if node is self.last_keyword:
return node
node.body.extend([EmptyLine.from_params()] * self.keyword_lines)
if node is not self.last_keyword:
node.body.extend([EmptyLine.from_params()] * self.keyword_lines)
return self.generic_visit(node)

def visit_Statement(self, node): # noqa
tokens = []
for line in node.lines:
if line[-1].type == Token.EOL:
line[-1].value = '\n' # TODO: use global formatting in the future
tokens.extend(line)
node.tokens = tokens
return node

@staticmethod
def trim_trailing_empty_lines(node):
while hasattr(node, 'body') and node.body and isinstance(node.body[-1], EmptyLine):
if not hasattr(node, 'body'):
return
while node.body and isinstance(node.body[-1], EmptyLine):
node.body.pop()

@staticmethod
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
*** Test Cases ***
Values Are Equal Fails
Log 1111

Values Are Equal Fails
Log 1111
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
*** Test Cases ***
Values Are Equal Fails
Log 1111

Values Are Equal Fails
Log 1111
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
*** Test Cases ***
Values Are Equal Fails
Log 1111

Values Are Equal Fails
Log 1111
8 changes: 8 additions & 0 deletions tests/atest/transformers/test_transformers.py
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,14 @@ def test_templated_tests_separated(self):
config=':separate_templated_tests=True'
)

@pytest.mark.parametrize('lines_at_the_end', [0, 1])
def test_test_case_last(self, lines_at_the_end):
run_tidy_and_compare(
self.TRANSFORMER_NAME,
sources=[f'test_case_last_{lines_at_the_end}_lines.robot'],
expected=['test_case_last.robot']
)


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