summaryrefslogtreecommitdiffstats
path: root/tests/test_option.py
diff options
context:
space:
mode:
authorGustavo J. A. M. Carneiro <gjc@src.gnome.org>2007-07-07 13:03:55 +0000
committerGustavo J. A. M. Carneiro <gjc@src.gnome.org>2007-07-07 13:03:55 +0000
commit4dcda65e3a00c3b87db3851fc20993884c7d512e (patch)
treeebeb314dc06dd3aa056b037b2c1f40620388fd82 /tests/test_option.py
parentfe3966c22cbf5e198164b088b4f46f280bc33126 (diff)
downloadpygobject-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.py43
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)
+