Skip to content

Commit bd49e13

Browse files
authored
Fix disablers not working for last setting in the section (#646)
1 parent 8d5eb36 commit bd49e13

File tree

13 files changed

+107
-10
lines changed

13 files changed

+107
-10
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
Disablers not working for last setting in the Settings section (#639)
2+
---------------------------------------------------------------------
3+
4+
Robotidy disablers partly didn't work for the last setting in the ``*** Settings ***`` section. It was caused by
5+
``OrderSettingsSection`` which modified every last setting resetting node position. Following code should now work
6+
properly::
7+
8+
*** Settings ***
9+
Test Tags # robotidy: off
10+
... tag1
11+
... tag2

robotidy/disablers.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,14 +97,17 @@ def is_header_disabled(self, line):
9797
return line in self.disabled_headers
9898

9999
def is_node_disabled(self, node, full_match=True):
100+
if not node:
101+
return False
102+
end_lineno = max(node.lineno, node.end_lineno) # workaround for transformers setting -1 as end_lineno
100103
if full_match:
101104
for start_line, end_line in self.lines:
102105
# lines are sorted on start_line, so we can return on first match
103-
if end_line >= node.end_lineno:
106+
if end_line >= end_lineno:
104107
return start_line <= node.lineno
105108
else:
106109
for start_line, end_line in self.lines:
107-
if node.lineno <= end_line and node.end_lineno >= start_line:
110+
if node.lineno <= end_line and end_lineno >= start_line:
108111
return True
109112
return False
110113

robotidy/transformers/NormalizeTags.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,7 @@ def visit_Tags(self, node): # noqa
6161
def visit_DefaultTags(self, node): # noqa
6262
return self.normalize_tags(node)
6363

64-
def visit_ForceTags(self, node): # noqa
65-
return self.normalize_tags(node)
64+
visit_TestTags = visit_ForceTags = visit_DefaultTags
6665

6766
def normalize_tags(self, node, indent=False):
6867
if self.disablers.is_node_disabled(node, full_match=False):

robotidy/transformers/OrderSettingsSection.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ def fix_eol(node):
206206
return node
207207
if getattr(node.tokens[-1], "type", None) != Token.EOL:
208208
return node
209-
node.tokens = list(node.tokens[:-1]) + [Token(Token.EOL, "\n")]
209+
node.tokens[-1].value = "\n"
210210
return node
211211

212212
@staticmethod

robotidy/transformers/RenameKeywords.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class RenameKeywords(Transformer):
2727
to set replacement value. This configuration (underscores are used instead of spaces):
2828
2929
```
30-
robotidy --transform RenameKeywords -c RenameKeywords:replace_pattern=^(?i)rename\s?me$:replace_to=New_Shining_Name .
30+
robotidy --transform RenameKeywords -c RenameKeywords:replace_pattern=^(?i)rename\\s?me$:replace_to=New_Shining_Name .
3131
```
3232
3333
will transform following code:
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
*** Settings ***
2+
Documentation Disablers with NormalizeTags acceptance tests
3+
4+
Test Tags # robotidy: off
5+
... UPPERCASE_TAG
6+
... tag2
7+
... tag3
8+
... tag4
9+
... tag5
10+
... tag6
11+
... tag7
12+
... tag8
13+
... tag9
14+
... tag10
15+
... tag11
16+
... tag12
17+
... tag13
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
*** Settings ***
2+
Documentation Disablers with NormalizeTags acceptance tests
3+
4+
# robotidy: off
5+
Test Tags
6+
... UPPERCASE_TAG
7+
... tag2
8+
... tag3
9+
... tag4
10+
... tag5
11+
... tag6
12+
... tag7
13+
... tag8
14+
... tag9
15+
... tag10
16+
... tag11
17+
... tag12
18+
... tag13
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
*** Settings ***
2+
Documentation Disablers with NormalizeTags acceptance tests
3+
4+
Test Tags UPPERCASE_TAG tag2 tag3 tag4 tag5 tag6 tag7 tag8 tag9 tag10 tag11 tag12 tag13 # robotidy: off

tests/atest/transformers/NormalizeSeparators/test_transformer.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,11 @@ def test_disable_section(self, skip_sections):
3939
def test_rf5_syntax(self):
4040
self.compare(source="rf5_syntax.robot", target_version=">=5")
4141

42-
def test_disablers(self):
43-
self.compare(source="disablers.robot", not_modified=True)
42+
@pytest.mark.parametrize(
43+
"disablers", ["disablers.robot", "disablers2.robot", "disablers3.robot", "disablers4.robot"]
44+
)
45+
def test_disablers(self, disablers):
46+
self.compare(source=disablers, not_modified=True)
4447

4548
def test_skip_documentation_default(self):
4649
self.compare(source="test.robot", config=":skip_documentation=False")
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
*** Settings ***
2+
Documentation Disablers with NormalizeTags acceptance tests
3+
4+
Test Tags # robotidy: off
5+
... UPPERCASE_TAG
6+
... tag2
7+
... tag3
8+
... tag4
9+
... tag5
10+
... tag6
11+
... tag7
12+
... tag8
13+
... tag9
14+
... tag10
15+
... tag11
16+
... tag12
17+
... tag13

0 commit comments

Comments
 (0)