diff options
author | Gustavo J. A. M. Carneiro <gjc@src.gnome.org> | 2007-07-07 13:03:55 +0000 |
---|---|---|
committer | Gustavo J. A. M. Carneiro <gjc@src.gnome.org> | 2007-07-07 13:03:55 +0000 |
commit | 4dcda65e3a00c3b87db3851fc20993884c7d512e (patch) | |
tree | ebeb314dc06dd3aa056b037b2c1f40620388fd82 /tests/test_option.py | |
parent | fe3966c22cbf5e198164b088b4f46f280bc33126 (diff) | |
download | pygobject-4dcda65e3a00c3b87db3851fc20993884c7d512e.tar.gz pygobject-4dcda65e3a00c3b87db3851fc20993884c7d512e.tar.xz pygobject-4dcda65e3a00c3b87db3851fc20993884c7d512e.zip |
Bug 342948 – Add exception handling to GOption
svn path=/trunk/; revision=681
Diffstat (limited to 'tests/test_option.py')
-rw-r--r-- | tests/test_option.py | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/tests/test_option.py b/tests/test_option.py index 84e9305..3996659 100644 --- a/tests/test_option.py +++ b/tests/test_option.py @@ -1,13 +1,19 @@ #!/usr/bin/env python import unittest +import sys +from StringIO import StringIO from common import gobject from gobject import option class TestOption(unittest.TestCase): + EXCEPTION_MESSAGE = "This callback fails" def setup_group(self): + def option_callback(option, opt, value, parser): + raise StandardError(self.EXCEPTION_MESSAGE) + group = option.OptionGroup( "unittest", "Unit test options", "Show all unittest options", option_list = [ @@ -15,6 +21,15 @@ class TestOption(unittest.TestCase): type="filename", dest="unit_file", help="Unit test option"), + option.make_option("--test-integer", + type="int", + dest="test_integer", + help="Unit integer option"), + option.make_option("--callback-failure-test", + action="callback", + callback=option_callback, + dest="test_integer", + help="Unit integer option"), ]) group.add_option("-t", "--test", action="store_false", @@ -24,7 +39,8 @@ class TestOption(unittest.TestCase): return group def setup_parser(self): - parser = option.OptionParser("NAMES...", description="Option unit test") + parser = option.OptionParser("NAMES...", + description="Option unit test") parser.add_option("-t", "--test", help="Unit test option", action="store_false", dest="test", default=True) return parser @@ -38,6 +54,31 @@ class TestOption(unittest.TestCase): assert group.values.test assert not parser.values.test assert group.values.unit_file == "test" + + try: + parser.parse_args(["test_option.py", "--test-integer=text"]) + except option.OptionValueError: + pass + else: + assert False + + sio = StringIO() + old_stderr = sys.stderr + sys.stderr = sio + try: + parser.parse_args(["test_option.py", "--callback-failure-test"]) + finally: + sys.stderr = old_stderr + assert (sio.getvalue().split('\n')[-2] == + "StandardError: " + self.EXCEPTION_MESSAGE) + + try: + parser.parse_args(["test_option.py", "--unknwon-option"]) + except option.BadOptionError: + pass + else: + assert False def testBadConstructor(self): self.assertRaises(TypeError, option.OptionGroup) + |