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,
|
"all_targets": true,
|
||||||
"prefixes": [
|
"prefixes": [
|
||||||
"lib/ansible/modules/",
|
"lib/ansible/modules/",
|
||||||
"lib/ansible/plugins/action/"
|
"lib/ansible/plugins/action/",
|
||||||
|
"plugins/modules/",
|
||||||
|
"plugins/action/"
|
||||||
],
|
],
|
||||||
"extensions": [
|
"extensions": [
|
||||||
".py"
|
".py"
|
||||||
|
|
|
@ -13,26 +13,55 @@ def main():
|
||||||
|
|
||||||
module_names = set()
|
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:
|
for path in paths:
|
||||||
if not path.startswith('lib/ansible/modules/'):
|
full_name = get_full_name(path, module_prefixes)
|
||||||
continue
|
|
||||||
|
|
||||||
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('_'):
|
if name.startswith('_'):
|
||||||
name = name[1:]
|
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:
|
return full_name
|
||||||
if not path.startswith('lib/ansible/plugins/action/'):
|
|
||||||
continue
|
|
||||||
|
|
||||||
name = os.path.splitext(os.path.basename(path))[0]
|
return None
|
||||||
|
|
||||||
if name not in module_names:
|
|
||||||
print('%s: action plugin has no matching module to provide documentation' % path)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
|
@ -2,7 +2,10 @@
|
||||||
"prefixes": [
|
"prefixes": [
|
||||||
"lib/ansible/modules/",
|
"lib/ansible/modules/",
|
||||||
"lib/ansible/module_utils/",
|
"lib/ansible/module_utils/",
|
||||||
"test/units/"
|
"plugins/modules/",
|
||||||
|
"plugins/module_utils/",
|
||||||
|
"test/units/",
|
||||||
|
"test/unit/"
|
||||||
],
|
],
|
||||||
"files": [
|
"files": [
|
||||||
"__init__.py"
|
"__init__.py"
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
".py"
|
".py"
|
||||||
],
|
],
|
||||||
"prefixes": [
|
"prefixes": [
|
||||||
"bin/",
|
"lib/ansible/",
|
||||||
"lib/ansible/"
|
"plugins/"
|
||||||
],
|
],
|
||||||
"output": "path-line-column-message"
|
"output": "path-line-column-message"
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
".py"
|
".py"
|
||||||
],
|
],
|
||||||
"prefixes": [
|
"prefixes": [
|
||||||
"bin/",
|
"lib/ansible/",
|
||||||
"lib/ansible/"
|
"plugins/"
|
||||||
],
|
],
|
||||||
"output": "path-line-column-message"
|
"output": "path-line-column-message"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
"prefixes": [
|
"prefixes": [
|
||||||
"lib/ansible/modules/"
|
"lib/ansible/modules/",
|
||||||
|
"plugins/modules/"
|
||||||
],
|
],
|
||||||
"extensions": [
|
"extensions": [
|
||||||
".py"
|
".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/base.py pylint:blacklisted-name
|
||||||
lib/ansible/playbook/helpers.py pylint:blacklisted-name
|
lib/ansible/playbook/helpers.py pylint:blacklisted-name
|
||||||
lib/ansible/playbook/role/__init__.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/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/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`
|
lib/ansible/plugins/action/asa.py action-plugin-docs # base class for deprecated network platform modules using `connection: local`
|
||||||
|
|
Loading…
Reference in a new issue