Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Ensure loading of collections and plugins (#1074)
- Loading branch information
1 parent
cfb8776
commit 51696b5
Showing
28 changed files
with
314 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
"""Test playbooks with local content.""" | ||
import pytest | ||
|
||
from ansiblelint.runner import Runner | ||
|
||
|
||
def test_local_collection(default_rules_collection): | ||
"""Assures local collections are found.""" | ||
playbook_path = 'test/local-content/test-collection.yml' | ||
runner = Runner(default_rules_collection, playbook_path, [], [], []) | ||
results = runner.run() | ||
|
||
assert len(runner.playbooks) == 1 | ||
assert len(results) == 0 | ||
|
||
|
||
def test_roles_local_content(default_rules_collection): | ||
"""Assures local content in roles is found.""" | ||
playbook_path = 'test/local-content/test-roles-success/test.yml' | ||
runner = Runner(default_rules_collection, playbook_path, [], [], []) | ||
results = runner.run() | ||
|
||
assert len(runner.playbooks) == 4 | ||
assert len(results) == 0 | ||
|
||
|
||
def test_roles_local_content_failure(default_rules_collection): | ||
"""Assures local content in roles is found, even if Ansible itself has trouble.""" | ||
playbook_path = 'test/local-content/test-roles-failed/test.yml' | ||
runner = Runner(default_rules_collection, playbook_path, [], [], []) | ||
results = runner.run() | ||
|
||
assert len(runner.playbooks) == 4 | ||
assert len(results) == 0 | ||
|
||
|
||
def test_roles_local_content_failure_complete(default_rules_collection): | ||
"""Role with local content that is not found.""" | ||
playbook_path = 'test/local-content/test-roles-failed-complete/test.yml' | ||
runner = Runner(default_rules_collection, playbook_path, [], [], []) | ||
with pytest.raises(SystemExit, match="^3$"): | ||
runner.run() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
The reason that every roles test gets its own directory is that while they | ||
use the same three roles, the way the tests work makes sure that when the | ||
second one runs, the roles and their local plugins from the first test are | ||
still known to Ansible. For that reason, their names reflect the directory | ||
they are in to make sure that tests don't use modules/plugins found by | ||
other tests. |
3 changes: 3 additions & 0 deletions
3
test/local-content/collections/ansible_collections/testns/testcoll/galaxy.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
namespace: testns | ||
name: testcoll | ||
version: 0.1.0 |
16 changes: 16 additions & 0 deletions
16
...cal-content/collections/ansible_collections/testns/testcoll/plugins/filter/test_filter.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
"""A filter plugin.""" | ||
|
||
|
||
def a_test_filter(a, b): | ||
"""Return a string containing both a and b.""" | ||
return '{0}:{1}'.format(a, b) | ||
|
||
|
||
class FilterModule(object): | ||
"""Filter plugin.""" | ||
|
||
def filters(self): | ||
"""Return filters.""" | ||
return { | ||
'test_filter': a_test_filter | ||
} |
14 changes: 14 additions & 0 deletions
14
...-content/collections/ansible_collections/testns/testcoll/plugins/modules/test_module_2.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#!/usr/bin/python | ||
"""A module.""" | ||
|
||
from ansible.module_utils.basic import AnsibleModule | ||
|
||
|
||
def main() -> None: | ||
"""Execute module.""" | ||
module = AnsibleModule(dict()) | ||
module.exit_json(msg="Hello 2!") | ||
|
||
|
||
if __name__ == '__main__': | ||
main() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
--- | ||
- name: Use module and filter plugin from local collection | ||
hosts: localhost | ||
tasks: | ||
- name: Use module from local collection | ||
testns.testcoll.test_module_2: | ||
- name: Use filter from local collection | ||
assert: | ||
that: | ||
- 1 | testns.testcoll.test_filter(2) == '1:2' |
14 changes: 14 additions & 0 deletions
14
...l-content/test-roles-failed-complete/roles/role1/library/test_module_1_failed_complete.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#!/usr/bin/python | ||
"""A module.""" | ||
|
||
from ansible.module_utils.basic import AnsibleModule | ||
|
||
|
||
def main() -> None: | ||
"""Execute module.""" | ||
module = AnsibleModule(dict()) | ||
module.exit_json(msg="Hello 1!") | ||
|
||
|
||
if __name__ == '__main__': | ||
main() |
3 changes: 3 additions & 0 deletions
3
test/local-content/test-roles-failed-complete/roles/role1/tasks/main.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
--- | ||
- name: Use local module 1 | ||
test_module_1_failed_complete: |
11 changes: 11 additions & 0 deletions
11
test/local-content/test-roles-failed-complete/roles/role2/tasks/main.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
--- | ||
- name: Use local module from other role that has been included before this one | ||
# If it has not been included before, loading this role fails! | ||
test_module_1_failed_complete: | ||
- name: Use local module from other role that has been included before this one | ||
# If it has not been included before, loading this role fails! | ||
test_module_3_failed_complete: | ||
- name: Use local test plugin | ||
assert: | ||
that: | ||
- "'2' is b_test_failed_complete '12345'" |
16 changes: 16 additions & 0 deletions
16
test/local-content/test-roles-failed-complete/roles/role2/test_plugins/b_failed_complete.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
"""A test plugin.""" | ||
|
||
|
||
def compatibility_in_test(a, b): | ||
"""Return True when a is contained in b.""" | ||
return a in b | ||
|
||
|
||
class TestModule: | ||
"""Test plugin.""" | ||
|
||
def tests(self): | ||
"""Return tests.""" | ||
return { | ||
'b_test_failed_complete': compatibility_in_test, | ||
} |
14 changes: 14 additions & 0 deletions
14
...l-content/test-roles-failed-complete/roles/role3/library/test_module_3_failed_complete.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#!/usr/bin/python | ||
"""A module.""" | ||
|
||
from ansible.module_utils.basic import AnsibleModule | ||
|
||
|
||
def main() -> None: | ||
"""Execute module.""" | ||
module = AnsibleModule(dict()) | ||
module.exit_json(msg="Hello 3!") | ||
|
||
|
||
if __name__ == '__main__': | ||
main() |
3 changes: 3 additions & 0 deletions
3
test/local-content/test-roles-failed-complete/roles/role3/tasks/main.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
--- | ||
- name: Use local module 3 | ||
test_module_3_failed_complete: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
- name: Include role which expects module that is local to other role which is not loaded | ||
hosts: localhost | ||
roles: | ||
- role2 |
14 changes: 14 additions & 0 deletions
14
test/local-content/test-roles-failed/roles/role1/library/test_module_1_failed.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#!/usr/bin/python | ||
"""A module.""" | ||
|
||
from ansible.module_utils.basic import AnsibleModule | ||
|
||
|
||
def main() -> None: | ||
"""Execute module.""" | ||
module = AnsibleModule(dict()) | ||
module.exit_json(msg="Hello 1!") | ||
|
||
|
||
if __name__ == '__main__': | ||
main() |
3 changes: 3 additions & 0 deletions
3
test/local-content/test-roles-failed/roles/role1/tasks/main.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
--- | ||
- name: Use local module 1 | ||
test_module_1_failed: |
11 changes: 11 additions & 0 deletions
11
test/local-content/test-roles-failed/roles/role2/tasks/main.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
--- | ||
- name: Use local module from other role that has been included before this one | ||
# If it has not been included before, loading this role fails! | ||
test_module_1_failed: | ||
- name: Use local module from other role that has been included before this one | ||
# If it has not been included before, loading this role fails! | ||
test_module_3_failed: | ||
- name: Use local test plugin | ||
assert: | ||
that: | ||
- "'2' is b_test_failed '12345'" |
16 changes: 16 additions & 0 deletions
16
test/local-content/test-roles-failed/roles/role2/test_plugins/b_failed.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
"""A test plugin.""" | ||
|
||
|
||
def compatibility_in_test(a, b): | ||
"""Return True when a is contained in b.""" | ||
return a in b | ||
|
||
|
||
class TestModule: | ||
"""Test plugin.""" | ||
|
||
def tests(self): | ||
"""Return tests.""" | ||
return { | ||
'b_test_failed': compatibility_in_test, | ||
} |
14 changes: 14 additions & 0 deletions
14
test/local-content/test-roles-failed/roles/role3/library/test_module_3_failed.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#!/usr/bin/python | ||
"""A module.""" | ||
|
||
from ansible.module_utils.basic import AnsibleModule | ||
|
||
|
||
def main() -> None: | ||
"""Execute module.""" | ||
module = AnsibleModule(dict()) | ||
module.exit_json(msg="Hello 3!") | ||
|
||
|
||
if __name__ == '__main__': | ||
main() |
3 changes: 3 additions & 0 deletions
3
test/local-content/test-roles-failed/roles/role3/tasks/main.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
--- | ||
- name: Use local module 3 | ||
test_module_3_failed: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
--- | ||
- name: Use roles with local module in wrong order, so that Ansible fails | ||
hosts: localhost | ||
roles: | ||
- role2 | ||
- role3 | ||
- role1 |
14 changes: 14 additions & 0 deletions
14
test/local-content/test-roles-success/roles/role1/library/test_module_1_success.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#!/usr/bin/python | ||
"""A module.""" | ||
|
||
from ansible.module_utils.basic import AnsibleModule | ||
|
||
|
||
def main() -> None: | ||
"""Execute module.""" | ||
module = AnsibleModule(dict()) | ||
module.exit_json(msg="Hello 1!") | ||
|
||
|
||
if __name__ == '__main__': | ||
main() |
3 changes: 3 additions & 0 deletions
3
test/local-content/test-roles-success/roles/role1/tasks/main.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
--- | ||
- name: Use local module 1 | ||
test_module_1_success: |
11 changes: 11 additions & 0 deletions
11
test/local-content/test-roles-success/roles/role2/tasks/main.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
--- | ||
- name: Use local module from other role that has been included before this one | ||
# If it has not been included before, loading this role fails! | ||
test_module_1_success: | ||
- name: Use local module from other role that has been included before this one | ||
# If it has not been included before, loading this role fails! | ||
test_module_3_success: | ||
- name: Use local test plugin | ||
assert: | ||
that: | ||
- "'2' is b_test_success '12345'" |
16 changes: 16 additions & 0 deletions
16
test/local-content/test-roles-success/roles/role2/test_plugins/b_success.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
"""A test plugin.""" | ||
|
||
|
||
def compatibility_in_test(a, b): | ||
"""Return True when a is contained in b.""" | ||
return a in b | ||
|
||
|
||
class TestModule: | ||
"""Test plugin.""" | ||
|
||
def tests(self): | ||
"""Return tests.""" | ||
return { | ||
'b_test_success': compatibility_in_test, | ||
} |
14 changes: 14 additions & 0 deletions
14
test/local-content/test-roles-success/roles/role3/library/test_module_3_success.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#!/usr/bin/python | ||
"""A module.""" | ||
|
||
from ansible.module_utils.basic import AnsibleModule | ||
|
||
|
||
def main() -> None: | ||
"""Execute module.""" | ||
module = AnsibleModule(dict()) | ||
module.exit_json(msg="Hello 3!") | ||
|
||
|
||
if __name__ == '__main__': | ||
main() |
3 changes: 3 additions & 0 deletions
3
test/local-content/test-roles-success/roles/role3/tasks/main.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
--- | ||
- name: Use local module 3 | ||
test_module_3_success: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
--- | ||
- name: Use roles with local modules and test plugins | ||
hosts: localhost | ||
roles: | ||
- role1 | ||
- role3 | ||
- role2 |