diff options
author | Taseer <taseer94@gmail.com> | 2017-04-11 21:39:18 +0500 |
---|---|---|
committer | Taseer <taseer94@gmail.com> | 2017-04-13 11:55:43 +0500 |
commit | b694a4a2d4719169ccc7fb3696367bca7118b513 (patch) | |
tree | 69c45568078b9ade485b9ff0b28e0ceec80a75c0 /qtip | |
parent | a4878f6c98855f5392324e0e72df3e2711022dd9 (diff) |
User friendly messages for exceptions
- Use colorama for color
- Implement verbosity option in separate patch
Change-Id: Ib2491d867e9bbf59cb00874d99a11f86ad7eea1b
Signed-off-by: Taseer Ahmed <taseer94@gmail.com>
Diffstat (limited to 'qtip')
-rw-r--r-- | qtip/base/error.py | 2 | ||||
-rw-r--r-- | qtip/cli/commands/cmd_metric.py | 17 | ||||
-rw-r--r-- | qtip/cli/commands/cmd_plan.py | 17 | ||||
-rw-r--r-- | qtip/cli/commands/cmd_qpi.py | 17 |
4 files changed, 41 insertions, 12 deletions
diff --git a/qtip/base/error.py b/qtip/base/error.py index f23d8cd9..d4b516ac 100644 --- a/qtip/base/error.py +++ b/qtip/base/error.py @@ -16,12 +16,14 @@ class InvalidContentError(BaseError): def __init__(self, filename, excinfo=None): self.filename = filename self.excinfo = excinfo + self.message = "Invalid content in {0}".format(filename) class NotFoundError(BaseError): def __init__(self, needle, heystack='qtip'): self.needle = needle self.heystack = heystack + self.message = "{0} not found in {1}".format(needle[0:-5], heystack) class ToBeDoneError(BaseError): diff --git a/qtip/cli/commands/cmd_metric.py b/qtip/cli/commands/cmd_metric.py index a2208444..1741fb48 100644 --- a/qtip/cli/commands/cmd_metric.py +++ b/qtip/cli/commands/cmd_metric.py @@ -8,8 +8,11 @@ ############################################################################## import click +from colorama import Fore import os +from qtip.base.error import InvalidContentError +from qtip.base.error import NotFoundError from qtip.cli import utils from qtip.cli.entry import Context from qtip.loader.metric import MetricSpec @@ -36,10 +39,16 @@ def cmd_list(ctx): @click.argument('name') @pass_context def show(ctx, name): - metric = MetricSpec('{}.yaml'.format(name)) - cnt = metric.content - output = utils.render('metric', cnt) - click.echo(output) + try: + metric = MetricSpec('{}.yaml'.format(name)) + except NotFoundError as nf: + click.echo(Fore.RED + "ERROR: metric spec: " + nf.message) + except InvalidContentError as ice: + click.echo(Fore.RED + "ERROR: metric spec " + ice.message) + else: + cnt = metric.content + output = utils.render('metric', cnt) + click.echo(output) @cli.command('run', help='Run performance test') diff --git a/qtip/cli/commands/cmd_plan.py b/qtip/cli/commands/cmd_plan.py index beb61b0e..b7c540b7 100644 --- a/qtip/cli/commands/cmd_plan.py +++ b/qtip/cli/commands/cmd_plan.py @@ -9,8 +9,11 @@ import click +from colorama import Fore import os +from qtip.base.error import InvalidContentError +from qtip.base.error import NotFoundError from qtip.cli import utils from qtip.cli.entry import Context from qtip.loader.plan import Plan @@ -44,10 +47,16 @@ def list(ctx): @click.argument('name') @pass_context def show(ctx, name): - plan = Plan('{}.yaml'.format(name)) - cnt = plan.content - output = utils.render('plan', cnt) - click.echo(output) + try: + plan = Plan('{}.yaml'.format(name)) + except NotFoundError as nf: + click.echo(Fore.RED + "ERROR: plan spec: " + nf.message) + except InvalidContentError as ice: + click.echo(Fore.RED + "ERROR: plan spec: " + ice.message) + else: + cnt = plan.content + output = utils.render('plan', cnt) + click.echo(output) @cli.command('run', help='Execute a Plan') diff --git a/qtip/cli/commands/cmd_qpi.py b/qtip/cli/commands/cmd_qpi.py index 1e3671c5..a47442b7 100644 --- a/qtip/cli/commands/cmd_qpi.py +++ b/qtip/cli/commands/cmd_qpi.py @@ -9,8 +9,11 @@ import click +from colorama import Fore import os +from qtip.base.error import InvalidContentError +from qtip.base.error import NotFoundError from qtip.cli import utils from qtip.cli.entry import Context from qtip.loader.qpi import QPISpec @@ -37,10 +40,16 @@ def cmd_list(ctx): @click.argument('name') @pass_context def show(ctx, name): - qpi = QPISpec('{}.yaml'.format(name)) - cnt = qpi.content - output = utils.render('qpi', cnt) - click.echo(output) + try: + qpi = QPISpec('{}.yaml'.format(name)) + except NotFoundError as nf: + click.echo(Fore.RED + "ERROR: qpi spec: " + nf.message) + except InvalidContentError as ice: + click.echo(Fore.RED + "ERROR: qpi spec: " + ice.message) + else: + cnt = qpi.content + output = utils.render('qpi', cnt) + click.echo(output) @cli.command('run', help='Run performance tests for the specified QPI') |