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:
Matt Clay 2019-08-26 20:40:53 -07:00 committed by GitHub
parent b6290e1d15
commit cca4eb71e3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 54 additions and 20 deletions

View file

@ -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"

View file

@ -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__':

View file

@ -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"

View file

@ -3,8 +3,8 @@
".py"
],
"prefixes": [
"bin/",
"lib/ansible/"
"lib/ansible/",
"plugins/"
],
"output": "path-line-column-message"
}

View file

@ -3,8 +3,8 @@
".py"
],
"prefixes": [
"bin/",
"lib/ansible/"
"lib/ansible/",
"plugins/"
],
"output": "path-line-column-message"
}

View file

@ -1,6 +1,7 @@
{
"prefixes": [
"lib/ansible/modules/"
"lib/ansible/modules/",
"plugins/modules/"
],
"extensions": [
".py"

View file

@ -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`