d651bda123
* Initial move of `test/runner/` content. `test/runner/lib/` -> `test/lib/ansible_test/_internal/` `test/runner/` -> `test/lib/ansible_test/_internal/data/` * Initial move of `test/sanity/` content. `test/sanity/` -> `test/lib/ansible_test/_internal/data/sanity/` (except `test/sanity/ignore.txt`) * Initial move of `test/units/pytest/` content. `test/units/pytest/` -> `test/lib/ansible_test/_internal/data/pytest/` * Follow-up move of `test/runner/unit/` content. `test/lib/ansible_test/_internal/data/unit/` -> `test/lib/ansible_test/tests/unit/` * Initial move of `ansible.cfg` content. `test/units/ansible.cfg` -> `test/lib/ansible_test/_internal/data/units/ansible.cfg` `test/env/ansible.cfg` -> `test/lib/ansible_test/_internal/data/env/ansible.cfg` * Follow-up move of `data` directory. `test/lib/ansible_test/_internal/data/` -> `test/lib/ansible_test/_data/` * Update import statements. * Add missing __init__.py for unit tests. * Fix path references and miscellaneous issues.
50 lines
1.9 KiB
Python
50 lines
1.9 KiB
Python
"""Layout provider for Ansible source."""
|
|
from __future__ import (absolute_import, division, print_function)
|
|
__metaclass__ = type
|
|
|
|
import os
|
|
import re
|
|
|
|
from ... import types as t
|
|
|
|
from ...util import (
|
|
ANSIBLE_TEST_ROOT,
|
|
)
|
|
|
|
from . import (
|
|
ContentLayout,
|
|
LayoutProvider,
|
|
)
|
|
|
|
|
|
class AnsibleLayout(LayoutProvider):
|
|
"""Layout provider for Ansible source."""
|
|
@staticmethod
|
|
def is_content_root(path): # type: (str) -> bool
|
|
"""Return True if the given path is a content root for this provider."""
|
|
return os.path.exists(os.path.join(path, 'setup.py')) and os.path.exists(os.path.join(path, 'bin/ansible-test'))
|
|
|
|
def create(self, root, paths): # type: (str, t.List[str]) -> ContentLayout
|
|
"""Create a Layout using the given root and paths."""
|
|
plugin_types = sorted(set(p.split('/')[3] for p in paths if re.search(r'^lib/ansible/plugins/[^/]+/', p)))
|
|
provider_types = sorted(set(p.split('/')[5] for p in paths if re.search(r'^test/lib/ansible_test/_internal/provider/[^/]+/', p)))
|
|
|
|
plugin_paths = dict((p, os.path.join('lib/ansible/plugins', p)) for p in plugin_types)
|
|
provider_paths = dict((p, os.path.join(ANSIBLE_TEST_ROOT, '_internal/provider', p)) for p in provider_types)
|
|
|
|
plugin_paths.update(dict(
|
|
modules='lib/ansible/modules',
|
|
module_utils='lib/ansible/module_utils',
|
|
))
|
|
|
|
return ContentLayout(root,
|
|
paths,
|
|
plugin_paths=plugin_paths,
|
|
provider_paths=provider_paths,
|
|
code_path='lib/ansible',
|
|
util_path='test/utils',
|
|
unit_path='test/units',
|
|
unit_module_path='test/units/modules',
|
|
unit_module_utils_path='test/units/module_utils',
|
|
integration_path='test/integration',
|
|
)
|