bisect-kit: stop bisector for fatal errors
Some errors, e.g. incorrect command line argument, are fatal. Should
stop bisector instead of retrying them.
This CL also changed some non-fatal issues from assertion to normal
exceptions.
BUG=None
TEST=unittest
Change-Id: I0a6ffd0f697f4e79114d752585019e705e69c33f
Reviewed-on: https://chromium-review.googlesource.com/1795943
Tested-by: Zheng-Jie Chang <zjchang@chromium.org>
Tested-by: Kuang-che Wu <kcwu@chromium.org>
Commit-Ready: Zheng-Jie Chang <zjchang@chromium.org>
Commit-Ready: Kuang-che Wu <kcwu@chromium.org>
Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org>
Reviewed-by: Zheng-Jie Chang <zjchang@chromium.org>
Reviewed-by: Kuang-che Wu <kcwu@chromium.org>
diff --git a/bisect_kit/cli_test.py b/bisect_kit/cli_test.py
index bf4838a..3f82362 100644
--- a/bisect_kit/cli_test.py
+++ b/bisect_kit/cli_test.py
@@ -5,6 +5,7 @@
"""Test cli module."""
from __future__ import print_function
+import argparse
import unittest
from bisect_kit import cli
@@ -74,6 +75,33 @@
self.assertEqual(cli.lookup_signal_name(15), 'SIGTERM')
self.assertEqual(cli.lookup_signal_name(99), 'Unknown')
+ def test_patching_argparser_exit(self):
+ parser = argparse.ArgumentParser()
+ cli.patching_argparser_exit(parser)
+ parser.add_argument('--value', type=int)
+ parser.add_argument('--necessary', required=True)
+
+ # Nothing happened.
+ parser.parse_args(['--necessary', 'foo'])
+
+ with self.assertRaises(SystemExit) as e:
+ parser.parse_args(['foo'])
+ self.assertEqual(e.exception.code, cli.EXIT_CODE_FATAL)
+
+ with self.assertRaises(SystemExit) as e:
+ parser.parse_args(['--necessary', 'foo', '--value', 'bar'])
+ self.assertEqual(e.exception.code, cli.EXIT_CODE_FATAL)
+
+ def test_fatal_error_handler(self):
+
+ @cli.fatal_error_handler
+ def test_func():
+ assert 0
+
+ with self.assertRaises(SystemExit) as e:
+ test_func()
+ self.assertEqual(e.exception.code, cli.EXIT_CODE_FATAL)
+
if __name__ == '__main__':
unittest.main()