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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,6 +1,7 @@
{ {
"prefixes": [ "prefixes": [
"lib/ansible/modules/" "lib/ansible/modules/",
"plugins/modules/"
], ],
"extensions": [ "extensions": [
".py" ".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/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`