import weakref


class Dummy:
    def __init__(self):
        __import__('gevent.core')

try:
    assert weakref.ref(Dummy())() is None

    from gevent import socket
    s = socket.socket()
    r = weakref.ref(s)
    s.close()
    del s
    assert r() is None
except AssertionError: # pragma: no cover
    import sys
    if hasattr(sys, 'pypy_version_info'):
        # PyPy uses a non refcounted GC which may defer
        # the collection of the weakref, unlike CPython
        pass
    else:
        raise
