From 1b3a68de6702573f211c0336fa43d447c83945de Mon Sep 17 00:00:00 2001 From: chenhb Date: Fri, 14 Dec 2018 16:45:55 +0800 Subject: [PATCH] Add a check for `rally` command It would print an exception while user called 'rally' command without argument. Let us fix this issue. Change-Id: If950e4aeda1067ddfc271caedcea807c080e46a3 --- CHANGELOG.rst | 2 ++ rally/cli/cliutils.py | 2 +- tests/functional/test_cli_functional.py | 33 +++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 tests/functional/test_cli_functional.py diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 84fa97d96a..660a317874 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -26,6 +26,8 @@ Changed * Add the --html-static option to commands ``rally task trends``, it could generate trends report with embedded js/css. +* Fix an issue with calling `rally` command without arguments + [1.3.0] - 2018-12-01 -------------------- diff --git a/rally/cli/cliutils.py b/rally/cli/cliutils.py index f360a491a4..7e22bc9343 100644 --- a/rally/cli/cliutils.py +++ b/rally/cli/cliutils.py @@ -576,7 +576,7 @@ def validate_deprecated_args(argv, fn): def run(argv, categories): - if argv[1] in ["version", "--version"]: + if len(argv) > 1 and argv[1] in ["version", "--version"]: _print_version() return 0 diff --git a/tests/functional/test_cli_functional.py b/tests/functional/test_cli_functional.py new file mode 100644 index 0000000000..2a6303ec4a --- /dev/null +++ b/tests/functional/test_cli_functional.py @@ -0,0 +1,33 @@ +# Copyright 2018: ZTE 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 subprocess +import unittest + + +class CLITestCase(unittest.TestCase): + + def test_rally_cli(self): + try: + output = subprocess.check_output(["rally"], + stderr=subprocess.STDOUT) + except subprocess.CalledProcessError as e: + output = e.output + self.assertIn("too few arguments", output) + + def test_version_cli(self): + output = subprocess.check_output(["rally", "version"], + stderr=subprocess.STDOUT) + self.assertIn("Rally version:", output)