summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorjason kirtland <jek@discorporate.us>2010-03-28 15:33:52 -0700
committerjason kirtland <jek@discorporate.us>2010-03-28 15:33:52 -0700
commita5319c1d1f46529292ee689db707f54cabb27057 (patch)
treed4d7232fc0969cbe6545d462568add12aceddc34 /tests
parent646878b18d511be4edf080a8cd1e5453d3aed9b3 (diff)
downloadblinker-a5319c1d1f46529292ee689db707f54cabb27057.tar.gz
Woot, 1.0 works on Jython too.
Diffstat (limited to 'tests')
-rw-r--r--tests/test_signals.py33
1 files changed, 31 insertions, 2 deletions
diff --git a/tests/test_signals.py b/tests/test_signals.py
index 5328872..ef02b4d 100644
--- a/tests/test_signals.py
+++ b/tests/test_signals.py
@@ -1,8 +1,21 @@
+import gc
import sys
+import time
+
import blinker
+
from nose.tools import assert_raises
+jython = sys.platform.startswith('java')
+
+
+def collect():
+ if jython:
+ gc.collect()
+ time.sleep(0.1)
+
+
def test_meta_connect():
sentinel = []
def meta_received(sender, **kw):
@@ -51,20 +64,29 @@ def test_singletons():
assert s1 is ns.signal('abc')
assert s1 is not ns.signal('def')
assert 'abc' in ns
+ collect()
+
# weak by default, already out of scope
assert 'def' not in ns
del s1
+ collect()
+
assert 'abc' not in ns
def test_weak_receiver():
sentinel = []
- def received(**kw):
+ def received(sender, **kw):
sentinel.append(kw)
sig = blinker.Signal()
- sig.connect(received, weak=True)
+
+ # XXX: weirdly, under python an explicit weak=True causes this test
+ # to fail, leaving a strong ref to the receiver somewhere. ?!!
+ sig.connect(received) # weak=True by default.
+
del received
+ collect()
assert not sentinel
sig.send()
@@ -82,7 +104,9 @@ def test_strong_receiver():
sig = blinker.Signal()
sig.connect(received, weak=False)
+
del received
+ collect()
assert not sentinel
sig.send()
@@ -108,6 +132,8 @@ def test_instancemethod_receiver():
sig.send()
assert sentinel
del receiver
+ collect()
+
sig.send()
assert len(sentinel) == 1
@@ -159,6 +185,7 @@ def test_filtered_receiver_weakref():
assert sentinel == [obj]
del sentinel[:]
del obj
+ collect()
# general index isn't cleaned up
assert sig.receivers
@@ -206,6 +233,8 @@ def test_has_receivers():
assert sig.has_receivers_for(o)
del received
+ collect()
+
assert not sig.has_receivers_for('xyz')
assert list(sig.receivers_for('xyz')) == []
assert list(sig.receivers_for(o)) == []