Display proper missing argument name

Find and show argument name instead of showing argument of 'dest'
Add functional test for this
Remove test_cli_utils.py -> utils.py because this actually utils,
not tests.

Change-Id: Icc138ecf40b4929826efcad52c135c8809348d20
Closes-Bug: #1380562
This commit is contained in:
Sergey Skripnick 2014-10-13 14:26:37 +03:00
parent 4ac2f304fb
commit 30e025cdcf
8 changed files with 42 additions and 7 deletions

View File

@ -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)

View File

View File

@ -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):

View File

@ -16,7 +16,7 @@
import unittest
import test_cli_utils as utils
from tests.functional import utils
class InfoTestCase(unittest.TestCase):

View File

@ -16,7 +16,7 @@
import unittest
import test_cli_utils as utils
from tests.functional import utils
class ShowTestCase(unittest.TestCase):

View File

@ -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):

View File

@ -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)