mirror of https://github.com/ansible/ansible.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
"""Layout provider for Ansible source."""
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
|
|
from . import (
|
|
ContentLayout,
|
|
LayoutProvider,
|
|
)
|
|
|
|
from ...util import (
|
|
ANSIBLE_SOURCE_ROOT,
|
|
ANSIBLE_TEST_ROOT,
|
|
)
|
|
|
|
|
|
class AnsibleLayout(LayoutProvider):
|
|
"""Layout provider for Ansible source."""
|
|
|
|
@staticmethod
|
|
def is_content_root(path: str) -> bool:
|
|
"""Return True if the given path is a content root for this provider."""
|
|
return os.path.isfile(os.path.join(path, 'pyproject.toml')) and os.path.isdir(os.path.join(path, 'test/lib/ansible_test'))
|
|
|
|
def create(self, root: str, paths: list[str]) -> ContentLayout:
|
|
"""Create a Layout using the given root and paths."""
|
|
plugin_paths = dict((p, os.path.join('lib/ansible/plugins', p)) for p in self.PLUGIN_TYPES)
|
|
|
|
plugin_paths.update(
|
|
modules='lib/ansible/modules',
|
|
module_utils='lib/ansible/module_utils',
|
|
)
|
|
|
|
errors: list[str] = []
|
|
|
|
if root != ANSIBLE_SOURCE_ROOT:
|
|
errors.extend((
|
|
f'Cannot test "{root}" with ansible-test from "{ANSIBLE_TEST_ROOT}".',
|
|
'',
|
|
f'Did you intend to run "{root}/bin/ansible-test" instead?',
|
|
))
|
|
|
|
return ContentLayout(
|
|
root,
|
|
paths,
|
|
plugin_paths=plugin_paths,
|
|
collection=None,
|
|
test_path='test',
|
|
results_path='test/results',
|
|
sanity_path='test/sanity',
|
|
sanity_messages=None,
|
|
integration_path='test/integration',
|
|
integration_targets_path='test/integration/targets',
|
|
integration_vars_path='test/integration/integration_config.yml',
|
|
integration_messages=None,
|
|
unit_path='test/units',
|
|
unit_module_path='test/units/modules',
|
|
unit_module_utils_path='test/units/module_utils',
|
|
unit_messages=None,
|
|
unsupported=errors,
|
|
)
|