Simplify ansible-test target processing. (#61506)

* Clean up layout paths for integration tests.

* Remove "special" integration test target type.

* Remove unnecessary role detection logic.

* Remove support for non-sh runme scripts.

* Simplify reading of aliases.
This commit is contained in:
Matt Clay 2019-08-28 22:18:20 -07:00 committed by GitHub
parent d7845da326
commit d92e2a6b0e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 21 additions and 19 deletions

View file

@ -0,0 +1 @@
hidden

View file

@ -0,0 +1 @@
hidden

View file

@ -1 +1,2 @@
needs/target/connection
hidden

View file

@ -85,6 +85,8 @@ class ContentLayout(Layout):
results_path, # type: str
sanity_path, # type: str
integration_path, # type: str
integration_targets_path, # type: str
integration_vars_path, # type: str
unit_path, # type: str
unit_module_path, # type: str
unit_module_utils_path, # type: str
@ -97,11 +99,12 @@ class ContentLayout(Layout):
self.results_path = results_path
self.sanity_path = sanity_path
self.integration_path = integration_path
self.integration_targets_path = os.path.join(integration_path, 'targets')
self.integration_vars_path = os.path.join(integration_path, 'integration_config.yml')
self.integration_targets_path = integration_targets_path
self.integration_vars_path = integration_vars_path
self.unit_path = unit_path
self.unit_module_path = unit_module_path
self.unit_module_utils_path = unit_module_utils_path
self.is_ansible = root == ANSIBLE_SOURCE_ROOT
@property

View file

@ -36,6 +36,8 @@ class AnsibleLayout(LayoutProvider):
results_path='test/results',
sanity_path='test/sanity',
integration_path='test/integration',
integration_targets_path='test/integration/targets',
integration_vars_path='test/integration/integration_config.yml',
unit_path='test/units',
unit_module_path='test/units/modules',
unit_module_utils_path='test/units/module_utils',

View file

@ -48,6 +48,8 @@ class CollectionLayout(LayoutProvider):
results_path='tests/output',
sanity_path='tests/sanity',
integration_path='tests/integration',
integration_targets_path='tests/integration/targets',
integration_vars_path='tests/integration/integration_config.yml',
unit_path='tests/unit',
unit_module_path='tests/unit/plugins/modules',
unit_module_utils_path='tests/unit/plugins/module_utils',

View file

@ -520,31 +520,23 @@ class IntegrationTarget(CompletionTarget):
# script_path and type
contents = [os.path.basename(p) for p in data_context().content.get_files(path)]
file_paths = data_context().content.get_files(path)
runme_path = os.path.join(path, 'runme.sh')
runme_files = tuple(c for c in contents if os.path.splitext(c)[0] == 'runme')
test_files = tuple(c for c in contents if os.path.splitext(c)[0] == 'test')
self.script_path = None
if runme_files:
if runme_path in file_paths:
self.type = 'script'
self.script_path = os.path.join(path, runme_files[0])
elif test_files:
self.type = 'special'
elif os.path.isdir(os.path.join(path, 'tasks')) or os.path.isdir(os.path.join(path, 'defaults')):
self.type = 'role'
self.script_path = runme_path
else:
self.type = 'role' # ansible will consider these empty roles, so ansible-test should as well
self.script_path = None
# static_aliases
try:
aliases_path = os.path.join(path, 'aliases')
aliases_path = os.path.join(path, 'aliases')
if aliases_path in file_paths:
static_aliases = tuple(read_lines_without_comments(aliases_path, remove_blank_lines=True))
except IOError as ex:
if ex.errno != errno.ENOENT:
raise
else:
static_aliases = tuple()
# modules