summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Hellmann <doug.hellmann@gmail.com>2013-08-29 07:56:07 -0700
committerDoug Hellmann <doug.hellmann@gmail.com>2013-08-29 07:56:07 -0700
commit624c7b4e70bc0a48d6ca2c5718b61a57a813df49 (patch)
treedec1550c1a5cd90272a379b07b7306f69f0cfee1
parent76408ceca1421d7d6e4b19b2b1341192128edd40 (diff)
parent5ba14adc41615e89020d2059b1e22c29e6220e25 (diff)
downloadcliff-624c7b4e70bc0a48d6ca2c5718b61a57a813df49.tar.gz
Merge pull request #43 from kryskool/kryskool/unknow-cmd-better
Display better error message on unknown command, and return code 1
-rw-r--r--cliff/app.py9
-rw-r--r--cliff/tests/test_app.py13
2 files changed, 21 insertions, 1 deletions
diff --git a/cliff/app.py b/cliff/app.py
index 5cbd195..39ccbdd 100644
--- a/cliff/app.py
+++ b/cliff/app.py
@@ -257,7 +257,14 @@ class App(object):
return 0
def run_subcommand(self, argv):
- subcommand = self.command_manager.find_command(argv)
+ try:
+ subcommand = self.command_manager.find_command(argv)
+ except ValueError as err:
+ if self.options.debug:
+ raise
+ else:
+ LOG.error(err)
+ return 2
cmd_factory, cmd_name, sub_argv = subcommand
cmd = cmd_factory(self, self.options)
err = None
diff --git a/cliff/tests/test_app.py b/cliff/tests/test_app.py
index 5f13007..e3bc12e 100644
--- a/cliff/tests/test_app.py
+++ b/cliff/tests/test_app.py
@@ -374,3 +374,16 @@ def test_error_encoding_sys():
app.stderr.write(u_data)
actual = stderr.getvalue()
assert data == actual
+
+
+def test_unknown_cmd():
+ app, command = make_app()
+ assert app.run(['hell']) == 2
+
+
+def test_unknown_cmd_debug():
+ app, command = make_app()
+ try:
+ app.run(['--debug', 'hell']) == 2
+ except ValueError as err:
+ assert "['hell']" in ('%s' % err)