diff --git a/fsl/tests/test_notifier.py b/fsl/tests/test_notifier.py index c85df509f9940bbbe4a0b64f0d6a4614bf10802e..d3ead8c66cf808b70139782ed6c4872023a83f84 100644 --- a/fsl/tests/test_notifier.py +++ b/fsl/tests/test_notifier.py @@ -204,3 +204,31 @@ def test_skip(): t.notify(topic='topic') assert default_called[0] == 14 assert topic_called[ 0] == 6 + + +# Make sure there is no error +# if a callback function is GC'd +# fsl/fslpy!470 +def test_gc(): + + class Thing(notifier.Notifier): + pass + + t = Thing() + + called = [] + + def callback(thing, topic, value): + called.append((thing, topic, value)) + + t.register('callback', callback) + + t.notify() + assert called == [(t, None, None)] + + called[:] = [] + callback = None + del callback + + t.notify() + assert called == []