aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTaseer Ahmed <taseer94@gmail.com>2017-05-23 21:42:40 +0500
committerTaseer Ahmed <taseer94@gmail.com>2017-05-29 21:58:20 +0500
commit995f6b5104fa65d95993eebb714bc2b018b85d0f (patch)
tree15c8ccc0b83cfaa5b92edbbd3da8d743bee9f570
parent73b0a82bdff1c53846c8cd99475ba3a58b0fdca4 (diff)
Pass on all unhandled options
Change-Id: Ic86002732c87d3b4ac5b5b3b664f116354d4bf9d Signed-off-by: Taseer Ahmed <taseer94@gmail.com>
-rw-r--r--qtip/cli/commands/cmd_project.py24
-rw-r--r--qtip/runner/project.py17
-rw-r--r--tests/unit/cli/cmd_project_test.py37
3 files changed, 63 insertions, 15 deletions
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')