1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Check targets (#3019)

* Add extra sanity test to check aliases files.

* Remove invalid target name.
This commit is contained in:
Felix Fontein 2021-07-16 19:52:09 +02:00 committed by GitHub
parent 9b1c6f0743
commit 27ba98a68e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 74 additions and 1 deletions

View file

@ -1,4 +1,3 @@
notification/mqtt
shippable/posix/group1 shippable/posix/group1
skip/aix skip/aix
skip/osx skip/osx

View file

@ -0,0 +1,11 @@
{
"include_symlinks": false,
"prefixes": [
".azure-pipelines/azure-pipelines.yml",
"tests/integration/targets/"
],
"output": "path-message",
"requirements": [
"PyYAML"
]
}

63
tests/sanity/extra/aliases.py Executable file
View file

@ -0,0 +1,63 @@
#!/usr/bin/env python
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
"""Check extra collection docs with antsibull-lint."""
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import os
import sys
import yaml
def main():
"""Main entry point."""
paths = sys.argv[1:] or sys.stdin.read().splitlines()
paths = [path for path in paths if path.endswith('/aliases')]
with open('.azure-pipelines/azure-pipelines.yml', 'rb') as f:
azp = yaml.safe_load(f)
allowed_targets = set(['shippable/cloud/group1'])
for stage in azp['stages']:
if stage['stage'].startswith(('Sanity', 'Unit', 'Cloud', 'Summary')):
continue
for job in stage['jobs']:
for group in job['parameters']['groups']:
allowed_targets.add('shippable/posix/group{0}'.format(group))
for path in paths:
targets = []
skip = False
with open(path, 'r') as f:
for line in f:
if '#' in line:
line = line[:line.find('#')]
line = line.strip()
if line.startswith('needs/'):
continue
if line.startswith('skip/'):
continue
if line.startswith('cloud/'):
continue
if line in ('unsupported', 'disabled', 'hidden'):
skip = True
if line in ('destructive', ):
continue
if '/' not in line:
continue
targets.append(line)
if skip:
continue
if not targets:
if 'targets/setup_' in path:
continue
print('%s: %s' % (path, 'found no targets'))
for target in targets:
if target not in allowed_targets:
print('%s: %s' % (path, 'found invalid target "{0}"'.format(target)))
if __name__ == '__main__':
main()