Improve ansible-test completion and messaging. (#19627)
* Simplify type annotation of args.docker_util. * Improve error messaging for ansible-doc test. * Add completion for docker, remote and windows.pull/4420/head
parent
6f5ecb7efd
commit
dac226de4a
|
@ -0,0 +1,9 @@
|
||||||
|
centos6
|
||||||
|
centos7
|
||||||
|
fedora-rawhide
|
||||||
|
fedora23
|
||||||
|
opensuseleap
|
||||||
|
ubuntu1204
|
||||||
|
ubuntu1404
|
||||||
|
ubuntu1604
|
||||||
|
ubuntu1604py3
|
|
@ -0,0 +1,3 @@
|
||||||
|
freebsd/10.3-STABLE
|
||||||
|
freebsd/11.0-STABLE
|
||||||
|
osx/10.11
|
|
@ -0,0 +1,7 @@
|
||||||
|
2008-SP2
|
||||||
|
2008-R2_SP1
|
||||||
|
2012-RTM
|
||||||
|
2012-R2_RTM
|
||||||
|
2016-English-Full-Base
|
||||||
|
2016-English-Full-Containers
|
||||||
|
2016-English-Nano-Base
|
|
@ -723,7 +723,7 @@ def command_sanity_ansible_doc(args, targets, python_version):
|
||||||
stdout, stderr = intercept_command(args, cmd, env=env, capture=True, python_version=python_version)
|
stdout, stderr = intercept_command(args, cmd, env=env, capture=True, python_version=python_version)
|
||||||
|
|
||||||
if stderr:
|
if stderr:
|
||||||
# consider any output on stderr an error, even though the return code is zero
|
display.error('Output on stderr from ansible-doc is considered an error.')
|
||||||
raise SubprocessError(cmd, stderr=stderr)
|
raise SubprocessError(cmd, stderr=stderr)
|
||||||
|
|
||||||
if stdout:
|
if stdout:
|
||||||
|
@ -927,8 +927,8 @@ def detect_changes_local(args):
|
||||||
|
|
||||||
def docker_qualify_image(name):
|
def docker_qualify_image(name):
|
||||||
"""
|
"""
|
||||||
:type name: str | None
|
:type name: str
|
||||||
:rtype: str | None
|
:rtype: str
|
||||||
"""
|
"""
|
||||||
if not name or any((c in name) for c in ('/', ':')):
|
if not name or any((c in name) for c in ('/', ':')):
|
||||||
return name
|
return name
|
||||||
|
@ -1105,7 +1105,7 @@ class EnvironmentConfig(CommonConfig):
|
||||||
self.remote = args.remote # type: str
|
self.remote = args.remote # type: str
|
||||||
|
|
||||||
self.docker_privileged = args.docker_privileged if 'docker_privileged' in args else False # type: bool
|
self.docker_privileged = args.docker_privileged if 'docker_privileged' in args else False # type: bool
|
||||||
self.docker_util = docker_qualify_image(args.docker_util if 'docker_util' in args else None) # type: str | None
|
self.docker_util = docker_qualify_image(args.docker_util if 'docker_util' in args else '') # type: str
|
||||||
self.docker_pull = args.docker_pull if 'docker_pull' in args else False # type: bool
|
self.docker_pull = args.docker_pull if 'docker_pull' in args else False # type: bool
|
||||||
|
|
||||||
self.tox_sitepackages = args.tox_sitepackages # type: bool
|
self.tox_sitepackages = args.tox_sitepackages # type: bool
|
||||||
|
|
|
@ -205,7 +205,7 @@ def parse_args():
|
||||||
windows_integration.add_argument('--windows',
|
windows_integration.add_argument('--windows',
|
||||||
metavar='VERSION',
|
metavar='VERSION',
|
||||||
action='append',
|
action='append',
|
||||||
help='windows version')
|
help='windows version').completer = complete_windows
|
||||||
|
|
||||||
units = subparsers.add_parser('units',
|
units = subparsers.add_parser('units',
|
||||||
parents=[test],
|
parents=[test],
|
||||||
|
@ -413,12 +413,12 @@ def add_environments(parser, tox_version=False, tox_only=False):
|
||||||
nargs='?',
|
nargs='?',
|
||||||
default=None,
|
default=None,
|
||||||
const='ubuntu1604',
|
const='ubuntu1604',
|
||||||
help='run from a docker container')
|
help='run from a docker container').completer = complete_docker
|
||||||
|
|
||||||
environments.add_argument('--remote',
|
environments.add_argument('--remote',
|
||||||
metavar='PLATFORM',
|
metavar='PLATFORM',
|
||||||
default=None,
|
default=None,
|
||||||
help='run from a remote instance')
|
help='run from a remote instance').completer = complete_remote
|
||||||
|
|
||||||
remote = parser.add_argument_group(title='remote arguments')
|
remote = parser.add_argument_group(title='remote arguments')
|
||||||
|
|
||||||
|
@ -463,5 +463,45 @@ def complete_target(prefix, parsed_args, **_):
|
||||||
return find_target_completion(parsed_args.targets, prefix)
|
return find_target_completion(parsed_args.targets, prefix)
|
||||||
|
|
||||||
|
|
||||||
|
def complete_remote(prefix, parsed_args, **_):
|
||||||
|
"""
|
||||||
|
:type prefix: unicode
|
||||||
|
:type parsed_args: any
|
||||||
|
:rtype: list[str]
|
||||||
|
"""
|
||||||
|
del parsed_args
|
||||||
|
|
||||||
|
with open('test/runner/completion/remote.txt', 'r') as completion_fd:
|
||||||
|
images = completion_fd.read().splitlines()
|
||||||
|
|
||||||
|
return [i for i in images if i.startswith(prefix)]
|
||||||
|
|
||||||
|
|
||||||
|
def complete_docker(prefix, parsed_args, **_):
|
||||||
|
"""
|
||||||
|
:type prefix: unicode
|
||||||
|
:type parsed_args: any
|
||||||
|
:rtype: list[str]
|
||||||
|
"""
|
||||||
|
del parsed_args
|
||||||
|
|
||||||
|
with open('test/runner/completion/docker.txt', 'r') as completion_fd:
|
||||||
|
images = completion_fd.read().splitlines()
|
||||||
|
|
||||||
|
return [i for i in images if i.startswith(prefix)]
|
||||||
|
|
||||||
|
|
||||||
|
def complete_windows(prefix, parsed_args, **_):
|
||||||
|
"""
|
||||||
|
:type prefix: unicode
|
||||||
|
:type parsed_args: any
|
||||||
|
:rtype: list[str]
|
||||||
|
"""
|
||||||
|
with open('test/runner/completion/windows.txt', 'r') as completion_fd:
|
||||||
|
images = completion_fd.read().splitlines()
|
||||||
|
|
||||||
|
return [i for i in images if i.startswith(prefix) and (not parsed_args.windows or i not in parsed_args.windows)]
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|
Loading…
Reference in New Issue