Skip to content

Commit e53aa16

Browse files
authored
Fix key error for name[casing] rule (#3987)
1 parent f45acb2 commit e53aa16

File tree

7 files changed

+52
-14
lines changed

7 files changed

+52
-14
lines changed

.github/workflows/tox.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ jobs:
6969
env:
7070
# Number of expected test passes, safety measure for accidental skip of
7171
# tests. Update value if you add/remove tests.
72-
PYTEST_REQPASS: 850
72+
PYTEST_REQPASS: 851
7373
steps:
7474
- uses: actions/checkout@v4
7575
with:
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
- name: Test nested tasks within block and always
3+
block:
4+
- name: Test1
5+
ansible.builtin.debug:
6+
msg: Foo
7+
8+
- name: Test2
9+
ansible.builtin.debug:
10+
msg: Bar
11+
12+
always:
13+
- name: From always block to be auto fixed as name[casing] scenario
14+
ansible.builtin.debug:
15+
msg: Baz
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
- name: Test nested tasks within block and always
3+
block:
4+
- name: test1
5+
ansible.builtin.debug:
6+
msg: Foo
7+
8+
- name: Test2
9+
ansible.builtin.debug:
10+
msg: Bar
11+
12+
always:
13+
- name: from always block to be auto fixed as name[casing] scenario
14+
ansible.builtin.debug:
15+
msg: Baz

src/ansiblelint/rules/name.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -174,17 +174,16 @@ def transform(
174174
if match.tag == "name[casing]":
175175
target_task = self.seek(match.yaml_path, data)
176176
# Not using capitalize(), since that rewrites the rest of the name to lower case
177-
task_name = target_task["name"]
178-
if "|" in task_name: # if using prefix
179-
[file_name, update_task_name] = task_name.split("|")
180-
target_task[
181-
"name"
182-
] = f"{file_name.strip()} | {update_task_name.strip()[:1].upper()}{update_task_name.strip()[1:]}"
183-
else:
184-
target_task[
185-
"name"
186-
] = f"{target_task['name'][:1].upper()}{target_task['name'][1:]}"
187-
match.fixed = True
177+
task_name = target_task.get("name", None)
178+
if task_name:
179+
if "|" in task_name: # if using prefix
180+
[file_name, update_task_name] = task_name.split("|")
181+
target_task[
182+
"name"
183+
] = f"{file_name.strip()} | {update_task_name.strip()[:1].upper()}{update_task_name.strip()[1:]}"
184+
else:
185+
target_task["name"] = f"{task_name[:1].upper()}{task_name[1:]}"
186+
match.fixed = True
188187

189188

190189
if "pytest" in sys.modules:

src/ansiblelint/schemas/__store__.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"url": "https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/inventory.json"
2525
},
2626
"meta": {
27-
"etag": "097a20155bc7936b6eae292a556bb38202d34a0a333ff5cbaaa1b4d3a4cc7bf5",
27+
"etag": "fb58deb0f5f2a3b77ba298764f74bc6e3bd38a761f368a50bb285042f6260354",
2828
"url": "https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/meta.json"
2929
},
3030
"meta-runtime": {

src/ansiblelint/yaml_utils.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,8 @@ def _get_path_to_task_in_nested_tasks_block(
422422
continue
423423
next_task_key = task_keys_by_index.get(task_index + 1, None)
424424
if next_task_key is not None:
425+
if task.lc.data[next_task_key][2] < lineno:
426+
continue
425427
next_task_key_line_index = task.lc.data[next_task_key][0]
426428
else:
427429
next_task_key_line_index = None

test/test_transformer.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,14 @@ def fixture_runner_result(
174174
1,
175175
True,
176176
True,
177-
id="name_case_with_prefix",
177+
id="name_casing_prefix",
178+
),
179+
pytest.param(
180+
"examples/roles/name_casing/tasks/main.yml",
181+
2,
182+
True,
183+
True,
184+
id="name_case",
178185
),
179186
),
180187
)

0 commit comments

Comments
 (0)