6 # py3k has StringIO in a different module
8 from StringIO import StringIO
11 from io import StringIO
13 from gi.repository import GLib
16 class TestOption(unittest.TestCase):
17 EXCEPTION_MESSAGE = "This callback fails"
20 self.parser = GLib.option.OptionParser("NAMES...",
21 description="Option unit test")
22 self.parser.add_option("-t", "--test", help="Unit test option",
23 action="store_false", dest="test", default=True)
24 self.parser.add_option("--g-fatal-warnings",
26 dest="fatal_warnings",
29 def _create_group(self):
30 def option_callback(option, opt, value, parser):
31 raise Exception(self.EXCEPTION_MESSAGE)
33 group = GLib.option.OptionGroup(
34 "unittest", "Unit test options", "Show all unittest options",
36 GLib.option.make_option("-f", "-u", "--file", "--unit-file",
39 help="Unit test option"),
40 GLib.option.make_option("--test-integer",
43 help="Unit integer option"),
44 GLib.option.make_option("--callback-failure-test",
46 callback=option_callback,
48 help="Unit integer option"),
50 group.add_option("-t", "--test",
54 help="Unit test option")
55 self.parser.add_option_group(group)
58 def test_parse_args(self):
59 options, args = self.parser.parse_args(
61 self.assertFalse(args)
63 options, args = self.parser.parse_args(
64 ["test_option.py", "foo"])
65 self.assertEqual(args, [])
67 options, args = self.parser.parse_args(
68 ["test_option.py", "foo", "bar"])
69 self.assertEqual(args, [])
71 def test_parse_args_double_dash(self):
72 options, args = self.parser.parse_args(
73 ["test_option.py", "--", "-xxx"])
74 # self.assertEqual(args, ["-xxx"])
76 def test_parse_args_group(self):
77 group = self._create_group()
79 options, args = self.parser.parse_args(
80 ["test_option.py", "--test", "-f", "test"])
82 self.assertFalse(options.test)
83 self.assertEqual(options.unit_file, "test")
85 self.assertTrue(group.values.test)
86 self.assertFalse(self.parser.values.test)
87 self.assertEqual(group.values.unit_file, "test")
88 self.assertFalse(args)
90 def test_option_value_error(self):
92 self.assertRaises(GLib.option.OptionValueError, self.parser.parse_args,
93 ["test_option.py", "--test-integer=text"])
95 def test_bad_option_error(self):
96 self.assertRaises(GLib.option.BadOptionError,
97 self.parser.parse_args,
98 ["test_option.py", "--unknwon-option"])
100 def test_option_group_constructor(self):
101 self.assertRaises(TypeError, GLib.option.OptionGroup)
103 def test_standard_error(self):
106 old_stderr = sys.stderr
109 self.parser.parse_args(
110 ["test_option.py", "--callback-failure-test"])
112 sys.stderr = old_stderr
114 assert (sio.getvalue().split('\n')[-2] ==
115 "Exception: " + self.EXCEPTION_MESSAGE)