Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve ansible-test completion and messaging. #19627

Merged
merged 3 commits into from
Dec 22, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
9 changes: 9 additions & 0 deletions test/runner/completion/docker.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
centos6
centos7
fedora-rawhide
fedora23
opensuseleap
ubuntu1204
ubuntu1404
ubuntu1604
ubuntu1604py3
3 changes: 3 additions & 0 deletions test/runner/completion/remote.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
freebsd/10.3-STABLE
freebsd/11.0-STABLE
osx/10.11
7 changes: 7 additions & 0 deletions test/runner/completion/windows.txt
Original file line number Diff line number Diff line change
@@ -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
8 changes: 4 additions & 4 deletions test/runner/lib/executor.py
Original file line number Diff line number Diff line change
Expand Up @@ -720,7 +720,7 @@ def command_sanity_ansible_doc(args, targets, python_version):
stdout, stderr = intercept_command(args, cmd, env=env, capture=True, python_version=python_version)

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)

if stdout:
Expand Down Expand Up @@ -924,8 +924,8 @@ def detect_changes_local(args):

def docker_qualify_image(name):
"""
:type name: str | None
:rtype: str | None
:type name: str
:rtype: str
"""
if not name or any((c in name) for c in ('/', ':')):
return name
Expand Down Expand Up @@ -1102,7 +1102,7 @@ def __init__(self, args, command):
self.remote = args.remote # type: str

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.tox_sitepackages = args.tox_sitepackages # type: bool
Expand Down
46 changes: 43 additions & 3 deletions test/runner/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ def parse_args():
windows_integration.add_argument('--windows',
metavar='VERSION',
action='append',
help='windows version')
help='windows version').completer = complete_windows

units = subparsers.add_parser('units',
parents=[test],
Expand Down Expand Up @@ -413,12 +413,12 @@ def add_environments(parser, tox_version=False, tox_only=False):
nargs='?',
default=None,
const='ubuntu1604',
help='run from a docker container')
help='run from a docker container').completer = complete_docker

environments.add_argument('--remote',
metavar='PLATFORM',
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')

Expand Down Expand Up @@ -463,5 +463,45 @@ def complete_target(prefix, parsed_args, **_):
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__':
main()