diff options
Diffstat (limited to 'click/testing.py')
-rw-r--r-- | click/testing.py | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/click/testing.py b/click/testing.py index 09d37a7..ae36d10 100644 --- a/click/testing.py +++ b/click/testing.py @@ -197,6 +197,7 @@ class CliRunner(object): return char default_color = color + def should_strip_ansi(stream=None, color=None): if color is None: return not default_color @@ -285,21 +286,24 @@ class CliRunner(object): cli.main(args=args or (), prog_name=self.get_default_prog_name(cli), **extra) except SystemExit as e: - if e.code != 0: - exception = e - exc_info = sys.exc_info() - exit_code = e.code + if exit_code is None: + exit_code = 0 + + if exit_code != 0: + exception = e + if not isinstance(exit_code, int): sys.stdout.write(str(exit_code)) sys.stdout.write('\n') exit_code = 1 + except Exception as e: if not catch_exceptions: raise exception = e - exit_code = -1 + exit_code = 1 exc_info = sys.exc_info() finally: sys.stdout.flush() |