From 995f6b5104fa65d95993eebb714bc2b018b85d0f Mon Sep 17 00:00:00 2001 From: Taseer Ahmed Date: Tue, 23 May 2017 21:42:40 +0500 Subject: Pass on all unhandled options Change-Id: Ic86002732c87d3b4ac5b5b3b664f116354d4bf9d Signed-off-by: Taseer Ahmed --- qtip/cli/commands/cmd_project.py | 24 +++++++++++++++--------- qtip/runner/project.py | 17 +++++++++++------ tests/unit/cli/cmd_project_test.py | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 15 deletions(-) create mode 100644 tests/unit/cli/cmd_project_test.py diff --git a/qtip/cli/commands/cmd_project.py b/qtip/cli/commands/cmd_project.py index 42fd000d..740fb1c4 100644 --- a/qtip/cli/commands/cmd_project.py +++ b/qtip/cli/commands/cmd_project.py @@ -15,6 +15,9 @@ from qtip.cli import utils from qtip.runner import project +CONTEXT_SETTINGS = dict(ignore_unknown_options=True, allow_extra_args=True, ) + + class AliasedGroup(click.Group): def get_command(self, ctx, cmd_name): @@ -60,16 +63,19 @@ def create(pod, installer, master_host, scenario, name): extra_vars=utils.join_vars(**extra_vars))) -@cli.command(help='Setup testing environment') -def setup(): - project.setup() +@cli.command(context_settings=CONTEXT_SETTINGS, help='Setup testing environment') +@click.pass_context +def setup(ctx): + project.setup(ctx.args) -@cli.command(help='Execute testing plan') -def run(): - project.run() +@cli.command(context_settings=CONTEXT_SETTINGS, help='Execute testing plan') +@click.pass_context +def run(ctx): + project.run(ctx.args) -@cli.command(help='Teardown testing environment') -def teardown(): - project.teardown() +@cli.command(context_settings=CONTEXT_SETTINGS, help='Teardown testing environment') +@click.pass_context +def teardown(ctx): + project.teardown(ctx.args) diff --git a/qtip/runner/project.py b/qtip/runner/project.py index 9eadc9db..90d1e079 100644 --- a/qtip/runner/project.py +++ b/qtip/runner/project.py @@ -10,13 +10,18 @@ import os -def setup(): - os.system('ansible-playbook setup.yml') +def convert(vals): + if vals: + return " ".join(vals) -def run(): - os.system('ansible-playbook run.yml') +def setup(extra_val=None): + os.system('ansible-playbook setup.yml {}'.format(convert(extra_val))) -def teardown(): - os.system('ansible-playbook teardown.yml') +def run(extra_val=None): + os.system('ansible-playbook run.yml {}'.format(convert(extra_val))) + + +def teardown(extra_val=None): + os.system('ansible-playbook teardown.yml {}'.format(convert(extra_val))) diff --git a/tests/unit/cli/cmd_project_test.py b/tests/unit/cli/cmd_project_test.py new file mode 100644 index 00000000..8b9216fa --- /dev/null +++ b/tests/unit/cli/cmd_project_test.py @@ -0,0 +1,37 @@ +############################################################### +# Copyright (c) 2017 taseer94@gmail.com and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +from click.testing import CliRunner +import os +import pytest + +from qtip.cli.entry import cli + + +@pytest.fixture(scope='module') +def runner(): + return CliRunner() + + +def test_run(mocker, runner): + mocker.patch('os.system') + runner.invoke(cli, ['run', '-vvv']) + os.system.assert_called_once_with('ansible-playbook run.yml -vvv') + + +def test_setup(mocker, runner): + mocker.patch('os.system') + runner.invoke(cli, ['setup', '-vvv']) + os.system.assert_called_once_with('ansible-playbook setup.yml -vvv') + + +def test_teardown(mocker, runner): + mocker.patch('os.system') + runner.invoke(cli, ['teardown', '-vvv']) + os.system.assert_called_once_with('ansible-playbook teardown.yml -vvv') -- cgit 1.2.3-korg