diff --git a/rally/cmd/cliutils.py b/rally/cmd/cliutils.py index bdbb296f1d..46dde316ce 100644 --- a/rally/cmd/cliutils.py +++ b/rally/cmd/cliutils.py @@ -178,7 +178,12 @@ def run(argv, categories): # if you just got a single arg wrong. print(fn.__doc__) CONF.print_help() - print(e) + print("Missing arguments:") + for missing in e.missing: + for arg in fn.args: + if arg[1].get('dest', '').endswith(missing): + print(" " + arg[0][0]) + break return(1) try: ret = fn(*fn_args, **fn_kwargs) diff --git a/tests/functional/__init__.py b/tests/functional/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/functional/test_cli_deployment.py b/tests/functional/test_cli_deployment.py index 7e0c223620..71f45a98d2 100644 --- a/tests/functional/test_cli_deployment.py +++ b/tests/functional/test_cli_deployment.py @@ -13,12 +13,12 @@ # License for the specific language governing permissions and limitations # under the License. - import json import unittest import mock -import test_cli_utils as utils + +from tests.functional import utils class DeploymentTestCase(unittest.TestCase): diff --git a/tests/functional/test_cli_info.py b/tests/functional/test_cli_info.py index 9c6f7fa07a..5d52d67e15 100644 --- a/tests/functional/test_cli_info.py +++ b/tests/functional/test_cli_info.py @@ -16,7 +16,7 @@ import unittest -import test_cli_utils as utils +from tests.functional import utils class InfoTestCase(unittest.TestCase): diff --git a/tests/functional/test_cli_show.py b/tests/functional/test_cli_show.py index b26d157259..5a34e57b47 100644 --- a/tests/functional/test_cli_show.py +++ b/tests/functional/test_cli_show.py @@ -16,7 +16,7 @@ import unittest -import test_cli_utils as utils +from tests.functional import utils class ShowTestCase(unittest.TestCase): diff --git a/tests/functional/test_cli_task.py b/tests/functional/test_cli_task.py index 57c31c14b3..f28356fa98 100644 --- a/tests/functional/test_cli_task.py +++ b/tests/functional/test_cli_task.py @@ -13,12 +13,12 @@ # License for the specific language governing permissions and limitations # under the License. - import os import unittest import mock -import test_cli_utils as utils + +from tests.functional import utils class TaskTestCase(unittest.TestCase): diff --git a/tests/functional/test_cli_use.py b/tests/functional/test_cli_use.py new file mode 100644 index 0000000000..8dd43bd7f8 --- /dev/null +++ b/tests/functional/test_cli_use.py @@ -0,0 +1,30 @@ +# Copyright 2014: Mirantis Inc. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import unittest + +from tests.functional import utils + + +class CliUtilsTestCase(unittest.TestCase): + + def setUp(self): + super(CliUtilsTestCase, self).setUp() + self.rally = utils.Rally() + + def test_missing_argument(self): + with self.assertRaises(utils.RallyCmdError) as e: + self.rally("use task") + self.assertIn("--uuid", e.exception.output) diff --git a/tests/functional/test_cli_utils.py b/tests/functional/utils.py similarity index 100% rename from tests/functional/test_cli_utils.py rename to tests/functional/utils.py