Fix ansible-test change detection traceback.

(cherry picked from commit 53a3d1ffdb)
pull/70210/head
Matt Clay 5 years ago
parent e80d736869
commit 75d1213f9a

@ -0,0 +1,2 @@
bugfixes:
- ansible-test no longer tracebacks during change analysis due to processing an empty python file

@ -288,12 +288,6 @@ class PathMapper:
:type path: str
:rtype: list[str]
"""
if path == 'lib/ansible/module_utils/__init__.py':
return []
if path == 'plugins/module_utils/__init__.py':
return []
if not self.python_module_utils_imports:
display.info('Analyzing python module_utils imports...')
before = time.time()

@ -113,6 +113,11 @@ def get_python_module_utils_imports(compile_targets):
for module_util in sorted(imports):
if not imports[module_util]:
package_path = get_import_path(module_util, package=True)
if os.path.exists(package_path) and not os.path.getsize(package_path):
continue # ignore empty __init__.py files
display.warning('No imports found which use the "%s" module_util.' % module_util)
return imports
@ -123,14 +128,17 @@ def get_python_module_utils_name(path): # type: (str) -> str
base_path = data_context().content.module_utils_path
if data_context().content.collection:
prefix = 'ansible_collections.' + data_context().content.collection.prefix + 'plugins.module_utils.'
prefix = 'ansible_collections.' + data_context().content.collection.prefix + 'plugins.module_utils'
else:
prefix = 'ansible.module_utils.'
prefix = 'ansible.module_utils'
if path.endswith('/__init__.py'):
path = os.path.dirname(path)
name = prefix + os.path.splitext(os.path.relpath(path, base_path))[0].replace(os.sep, '.')
if path == base_path:
name = prefix
else:
name = prefix + '.' + os.path.splitext(os.path.relpath(path, base_path))[0].replace(os.path.sep, '.')
return name
@ -147,9 +155,6 @@ def enumerate_module_utils():
if ext != '.py':
continue
if os.path.getsize(path) == 0:
continue
module_utils.append(get_python_module_utils_name(path))
return set(module_utils)
@ -186,7 +191,9 @@ def get_import_path(name, package=False): # type: (str, bool) -> str
if name.startswith('ansible.module_utils.'):
path = os.path.join('lib', filename)
elif data_context().content.collection and name.startswith('ansible_collections.%s.plugins.module_utils.' % data_context().content.collection.full_name):
elif data_context().content.collection and (
name.startswith('ansible_collections.%s.plugins.module_utils.' % data_context().content.collection.full_name) or
name == 'ansible_collections.%s.plugins.module_utils' % data_context().content.collection.full_name):
path = '/'.join(filename.split('/')[3:])
else:
raise Exception('Unexpected import name: %s' % name)

Loading…
Cancel
Save