diff options
author | Simon Feltman <sfeltman@src.gnome.org> | 2016-02-29 22:50:32 -0800 |
---|---|---|
committer | Simon Feltman <sfeltman@src.gnome.org> | 2016-03-01 20:45:15 -0800 |
commit | 5f4b08f4e8a98046eab71537c7827edde2ca8742 (patch) | |
tree | 14b7c7bbad79f6e09b4aad262050bab6e036929a /tests/test_gobject.py | |
parent | cfca1457c39e3c4c7ef97e7b46a73c19e5adf305 (diff) | |
download | pygobject-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.py | 17 |
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() |