def _make_tests(cls): count = backend = None for count in range(2): for backend in core.supported_backends(): name, func = cls._make_test(count, backend) setattr(cls, name, func) name = func = None
class Test(unittest.TestCase): # NOTE that we extend unittest.TestCase, not greentest.TestCase # Extending the later causes the wrong hub to get used. assertRaisesRegex = getattr( unittest.TestCase, 'assertRaisesRegex', getattr(unittest.TestCase, 'assertRaisesRegexp')) def _check_backend(self, backend): hub = Hub(backend, default=False) try: self.assertEqual(hub.loop.backend, backend) gevent.sleep(0.001) fileno = hub.loop.fileno() if fileno is None: raise unittest.SkipTest("backend %s lacks fileno" % (backend, )) os.close(fileno) if backend not in ('kqueue', 'epoll'): # That's actually all the libev backends that use a file descriptor, # right? with self.assertRaisesRegex(SystemError, "(libev)"): gevent.sleep(0.001) hub.destroy() self.assertIn('destroyed', repr(hub)) finally: if hub.loop is not None: hub.destroy() def _make_test(count, backend): # pylint:disable=no-self-argument def test(self): self._check_backend(backend) test.__name__ = 'test_' + backend + '_' + str(count) return test.__name__, test count = backend = None for count in range(2): for backend in core.supported_backends(): name, func = _make_test(count, backend) locals()[name] = func name = func = None del count del backend del _make_test
import os import gevent from gevent import core for count in range(2): for backend in core.supported_backends(): hub = gevent.get_hub(backend, default=False) assert hub.loop.backend == backend, (hub.loop.backend, backend) gevent.sleep(0.001) fileno = hub.loop.fileno() if fileno is not None: print('%s. Testing %r: %r' % (count, backend, hub)) os.close(fileno) try: gevent.sleep(0.001) except SystemError as ex: if '(libev)' in str(ex): print('The error is expected: %s' % ex) else: raise else: raise AssertionError('gevent.sleep() is expected to fail after loop fd was closed') else: print('%s. %r lacks fileno()' % (count, backend)) hub.destroy() assert 'destroyed' in repr(hub), repr(hub)
from __future__ import print_function import os import gevent from gevent import core from six import xrange for count in xrange(2): for backend in core.supported_backends(): hub = gevent.get_hub(backend, default=False) assert hub.loop.backend == backend, (hub.loop.backend, backend) gevent.sleep(0.001) fileno = hub.loop.fileno() if fileno is not None: print('%s. Testing %r: %r' % (count, backend, hub)) os.close(fileno) try: gevent.sleep(0.001) except SystemError as ex: if '(libev)' in str(ex): print('The error is expected: %s' % ex) else: raise else: raise AssertionError( 'gevent.sleep() is expected to fail after loop fd was closed' ) else: print('%s. %r lacks fileno()' % (count, backend)) hub.destroy() assert 'destroyed' in repr(hub), repr(hub)