diff options
author | Gustavo J. A. M. Carneiro <gjc@src.gnome.org> | 2006-08-27 10:53:54 +0000 |
---|---|---|
committer | Gustavo J. A. M. Carneiro <gjc@src.gnome.org> | 2006-08-27 10:53:54 +0000 |
commit | 3938273dfd085dc75f64ce44706cf508fd971099 (patch) | |
tree | ef7a60014be7ec25578d1f8582967cfd7712951e /tests/test_signal.py | |
parent | 6c0b030393f51f1ca65708cc6620e0f2456b8779 (diff) | |
download | pygobject-3938273dfd085dc75f64ce44706cf508fd971099.tar.gz pygobject-3938273dfd085dc75f64ce44706cf508fd971099.tar.xz pygobject-3938273dfd085dc75f64ce44706cf508fd971099.zip |
Bug 353039 – Failure in signal emission during do_set_property invoked from constructor
Diffstat (limited to 'tests/test_signal.py')
-rw-r--r-- | tests/test_signal.py | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/tests/test_signal.py b/tests/test_signal.py index fd1e33c..bb33fb8 100644 --- a/tests/test_signal.py +++ b/tests/test_signal.py @@ -211,7 +211,35 @@ class TestClosures(unittest.TestCase): c = C(self) data = c.emit("my_signal", "\01\00\02") self.assertEqual(data, "\02\00\01") - + +class SigPropClass(gobject.GObject): + __gsignals__ = { 'my_signal': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, + (gobject.TYPE_INT,)) } + + __gproperties__ = { + 'foo': (str, None, None, '', gobject.PARAM_WRITABLE|gobject.PARAM_CONSTRUCT), + } + + signal_emission_failed = False + + def do_my_signal(self, arg): + self.arg = arg + + def do_set_property(self, pspec, value): + if pspec.name == 'foo': + self._foo = value + else: + raise AttributeError, 'unknown property %s' % pspec.name + try: + self.emit("my-signal", 1) + except TypeError: + self.signal_emission_failed = True + + +class TestSigProp(unittest.TestCase): + def testEmitInPropertySetter(self): + obj = SigPropClass() + self.failIf(obj.signal_emission_failed) if __name__ == '__main__': unittest.main() |