summaryrefslogtreecommitdiff
path: root/tests/test_gobject.py
diff options
context:
space:
mode:
authorSimon Feltman <sfeltman@src.gnome.org>2016-02-29 22:50:32 -0800
committerSimon Feltman <sfeltman@src.gnome.org>2016-03-01 20:45:15 -0800
commit5f4b08f4e8a98046eab71537c7827edde2ca8742 (patch)
tree14b7c7bbad79f6e09b4aad262050bab6e036929a /tests/test_gobject.py
parentcfca1457c39e3c4c7ef97e7b46a73c19e5adf305 (diff)
downloadpygobject-5f4b08f4e8a98046eab71537c7827edde2ca8742.tar.gz
gerror: Add special case marshaling for boxing GErrors
Transfer gtype from introspection GError class to Python GError implementation. Expose the PyGError pointer as an extern so other C files can pick this up. Add custom to/from GValue marshalers for GError. Add tests for both complete and incomplete (no boxed pointer held). https://bugzilla.gnome.org/show_bug.cgi?id=761592
Diffstat (limited to 'tests/test_gobject.py')
-rw-r--r--tests/test_gobject.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/test_gobject.py b/tests/test_gobject.py
index 87b0e4ca..e78132df 100644
--- a/tests/test_gobject.py
+++ b/tests/test_gobject.py
@@ -675,5 +675,22 @@ class TestGValue(unittest.TestCase):
value.set_value([32, 'foo_bar', 0.3])
self.assertEqual(value.get_value(), [32, 'foo_bar', 0.3])
+ def test_gerror_boxing(self):
+ error = GLib.Error('test message', domain='mydomain', code=42)
+ value = GObject.Value(GLib.Error, error)
+ self.assertEqual(value.g_type, GObject.type_from_name('GError'))
+
+ unboxed = value.get_value()
+ self.assertEqual(unboxed.message, error.message)
+ self.assertEqual(unboxed.domain, error.domain)
+ self.assertEqual(unboxed.code, error.code)
+
+ def test_gerror_novalue(self):
+ error = GLib.Error('test message', domain='mydomain', code=42)
+ value = GObject.Value(GLib.Error)
+ self.assertEqual(value.g_type, GObject.type_from_name('GError'))
+ self.assertEqual(value.get_value(), None)
+
+
if __name__ == '__main__':
unittest.main()