Update sanity tests for collections. (#61352)
* Remove pointless sanity tests on `bin` dir. * Update action-plugin-docs test for collections. * Update no-main-display test for collections. * Update empty-init test for collections. * Update no-assert test for collections. * Move required-and-default-attributes test. This test only applies to Ansible itself. * Update use-argspec-type-path test for collections.
This commit is contained in:
parent
b6290e1d15
commit
cca4eb71e3
9 changed files with 54 additions and 20 deletions
|
@ -2,7 +2,9 @@
|
|||
"all_targets": true,
|
||||
"prefixes": [
|
||||
"lib/ansible/modules/",
|
||||
"lib/ansible/plugins/action/"
|
||||
"lib/ansible/plugins/action/",
|
||||
"plugins/modules/",
|
||||
"plugins/action/"
|
||||
],
|
||||
"extensions": [
|
||||
".py"
|
||||
|
|
|
@ -13,26 +13,55 @@ def main():
|
|||
|
||||
module_names = set()
|
||||
|
||||
module_prefixes = {
|
||||
'lib/ansible/modules/': True,
|
||||
'plugins/modules/': False,
|
||||
}
|
||||
|
||||
action_prefixes = {
|
||||
'lib/ansible/plugins/action/': True,
|
||||
'plugins/action/': False,
|
||||
}
|
||||
|
||||
for path in paths:
|
||||
if not path.startswith('lib/ansible/modules/'):
|
||||
continue
|
||||
full_name = get_full_name(path, module_prefixes)
|
||||
|
||||
name = os.path.splitext(os.path.basename(path))[0]
|
||||
if full_name:
|
||||
module_names.add(full_name)
|
||||
|
||||
for path in paths:
|
||||
full_name = get_full_name(path, action_prefixes)
|
||||
|
||||
if full_name and full_name not in module_names:
|
||||
print('%s: action plugin has no matching module to provide documentation' % path)
|
||||
|
||||
|
||||
def get_full_name(path, prefixes):
|
||||
"""Return the full name of the plugin at the given path by matching against the given path prefixes, or None if no match is found."""
|
||||
for prefix, flat in prefixes.items():
|
||||
if path.startswith(prefix):
|
||||
relative_path = os.path.relpath(path, prefix)
|
||||
|
||||
if flat:
|
||||
full_name = os.path.basename(relative_path)
|
||||
else:
|
||||
full_name = relative_path
|
||||
|
||||
full_name = os.path.splitext(full_name)[0]
|
||||
|
||||
name = os.path.basename(full_name)
|
||||
|
||||
if name == '__init__':
|
||||
return None
|
||||
|
||||
if name != '__init__':
|
||||
if name.startswith('_'):
|
||||
name = name[1:]
|
||||
|
||||
module_names.add(name)
|
||||
full_name = os.path.join(os.path.dirname(full_name), name).replace(os.path.sep, '.')
|
||||
|
||||
for path in paths:
|
||||
if not path.startswith('lib/ansible/plugins/action/'):
|
||||
continue
|
||||
return full_name
|
||||
|
||||
name = os.path.splitext(os.path.basename(path))[0]
|
||||
|
||||
if name not in module_names:
|
||||
print('%s: action plugin has no matching module to provide documentation' % path)
|
||||
return None
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
@ -2,7 +2,10 @@
|
|||
"prefixes": [
|
||||
"lib/ansible/modules/",
|
||||
"lib/ansible/module_utils/",
|
||||
"test/units/"
|
||||
"plugins/modules/",
|
||||
"plugins/module_utils/",
|
||||
"test/units/",
|
||||
"test/unit/"
|
||||
],
|
||||
"files": [
|
||||
"__init__.py"
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
".py"
|
||||
],
|
||||
"prefixes": [
|
||||
"bin/",
|
||||
"lib/ansible/"
|
||||
"lib/ansible/",
|
||||
"plugins/"
|
||||
],
|
||||
"output": "path-line-column-message"
|
||||
}
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
".py"
|
||||
],
|
||||
"prefixes": [
|
||||
"bin/",
|
||||
"lib/ansible/"
|
||||
"lib/ansible/",
|
||||
"plugins/"
|
||||
],
|
||||
"output": "path-line-column-message"
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
"prefixes": [
|
||||
"lib/ansible/modules/"
|
||||
"lib/ansible/modules/",
|
||||
"plugins/modules/"
|
||||
],
|
||||
"extensions": [
|
||||
".py"
|
||||
|
|
|
@ -5821,7 +5821,6 @@ lib/ansible/parsing/vault/__init__.py pylint:blacklisted-name
|
|||
lib/ansible/playbook/base.py pylint:blacklisted-name
|
||||
lib/ansible/playbook/helpers.py pylint:blacklisted-name
|
||||
lib/ansible/playbook/role/__init__.py pylint:blacklisted-name
|
||||
lib/ansible/plugins/action/__init__.py action-plugin-docs # action plugin base class, not an actual action plugin
|
||||
lib/ansible/plugins/action/aireos.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
|
||||
lib/ansible/plugins/action/aruba.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
|
||||
lib/ansible/plugins/action/asa.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
|
||||
|
|
Loading…
Add table
Reference in a new issue