Skip to content

Commit

Permalink
Add regression tests for 'import_tasks' and 'include_tasks' (#1445)
Browse files Browse the repository at this point in the history
Regression tests for issue number 1446
  • Loading branch information
europ committed Mar 9, 2021
1 parent dd4bf59 commit 57aa3b8
Showing 1 changed file with 120 additions and 0 deletions.
120 changes: 120 additions & 0 deletions test/TestFilePathEvaluation.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
"""Testing file path evaluation when using import_tasks / include_tasks."""
import textwrap

import pytest

from ansiblelint.runner import Runner

LAYOUT_IMPORTS = {
'main.yml': textwrap.dedent(
"""\
---
- hosts: target
gather_facts: false
tasks:
- name: from main import task 1
import_tasks: tasks/task_1.yml
"""
),
'tasks/task_1.yml': textwrap.dedent(
"""\
---
- name: from task 1 import task 2
import_tasks: tasks/task_2.yml
"""
),
'tasks/task_2.yml': textwrap.dedent(
"""\
---
- name: from task 2 import subtask 1
import_tasks: tasks/subtasks/subtask_1.yml
"""
),
'tasks/subtasks/subtask_1.yml': textwrap.dedent(
"""\
---
- name: from subtask 1 import subtask 2
import_tasks: tasks/subtasks/subtask_2.yml
"""
),
'tasks/subtasks/subtask_2.yml': textwrap.dedent(
"""\
---
- name: from subtask 2 do something
debug:
msg: |
Something...
"""
),
}

LAYOUT_INCLUDES = {
'main.yml': textwrap.dedent(
"""\
---
- hosts: target
gather_facts: false
tasks:
- name: from main import task 1
include_tasks: tasks/task_1.yml
"""
),
'tasks/task_1.yml': textwrap.dedent(
"""\
---
- name: from task 1 import task 2
include_tasks: tasks/task_2.yml
"""
),
'tasks/task_2.yml': textwrap.dedent(
"""\
---
- name: from task 2 import subtask 1
include_tasks: tasks/subtasks/subtask_1.yml
"""
),
'tasks/subtasks/subtask_1.yml': textwrap.dedent(
"""\
---
- name: from subtask 1 import subtask 2
include_tasks: tasks/subtasks/subtask_2.yml
"""
),
'tasks/subtasks/subtask_2.yml': textwrap.dedent(
"""\
---
- name: from subtask 2 do something
debug:
msg: |
Something...
"""
),
}


@pytest.mark.parametrize(
'ansible_project_layout',
(
pytest.param(LAYOUT_IMPORTS, id='using only import_tasks'),
pytest.param(LAYOUT_INCLUDES, id='using only include_tasks'),
),
)
@pytest.mark.xfail(
reason='https://github.com/ansible-community/ansible-lint/issues/1446'
)
def test_file_path_evaluation(
tmp_path, default_rules_collection, ansible_project_layout
):
"""Test file path evaluation when using import_tasks / include_tasks in the project.
Usage of import_tasks / include_tasks may introduce false positive load-failure due
to incorrect file path evaluation.
"""
for file_path, file_content in ansible_project_layout.items():
full_path = tmp_path / file_path
full_path.parent.mkdir(parents=True, exist_ok=True)
full_path.write_text(file_content)

result = Runner(str(tmp_path), rules=default_rules_collection).run()

assert not result

0 comments on commit 57aa3b8

Please sign in to comment.