Jelajahi Sumber

adds test utils skip_if_pypy / skip_if_jython

Ask Solem 13 tahun lalu
induk
melakukan
55ba92dc60

+ 8 - 5
celery/tests/backends/test_database.py

@@ -14,7 +14,12 @@ from celery.exceptions import ImproperlyConfigured
 from celery.result import AsyncResult
 from celery.utils import uuid
 
-from celery.tests.utils import Case, mask_modules
+from celery.tests.utils import (
+    Case,
+    mask_modules,
+    skip_if_pypy,
+    skip_if_jython,
+)
 
 try:
     import sqlalchemy  # noqa
@@ -33,11 +38,9 @@ class SomeClass(object):
 
 class test_DatabaseBackend(Case):
 
+    @skip_if_pypy
+    @skip_if_jython
     def setUp(self):
-        if sys.platform.startswith('java'):
-            raise SkipTest('SQLite not available on Jython')
-        if hasattr(sys, 'pypy_version_info'):
-            raise SkipTest('Known to not pass on PyPy')
         if DatabaseBackend is None:
             raise SkipTest('sqlalchemy not installed')
 

+ 8 - 5
celery/tests/bin/test_celeryd.py

@@ -23,7 +23,12 @@ from celery.exceptions import ImproperlyConfigured, SystemTerminate
 from celery.utils.log import ensure_process_aware_logger
 from celery.worker import state
 
-from celery.tests.utils import AppCase, WhateverIO
+from celery.tests.utils import (
+    AppCase,
+    WhateverIO,
+    skip_if_pypy,
+    skip_if_jython,
+)
 
 ensure_process_aware_logger()
 
@@ -580,11 +585,9 @@ class test_signal_handlers(AppCase):
                 state.should_stop = False
 
     @patch('sys.__stderr__')
+    @skip_if_pypy
+    @skip_if_jython
     def test_worker_cry_handler(self, stderr):
-        if sys.platform.startswith('java'):
-            raise SkipTest('Cry handler does not work on Jython')
-        if hasattr(sys, 'pypy_version_info'):
-            raise SkipTest('Cry handler does not work on PyPy')
         if sys.version_info > (2, 5):
             handlers = self.psig(cd.install_cry_handler)
             self.assertIsNone(handlers['SIGUSR1']('SIGUSR1', object()))

+ 2 - 3
celery/tests/concurrency/test_eventlet.py

@@ -14,14 +14,13 @@ from celery.concurrency.eventlet import (
     TaskPool,
 )
 
-from celery.tests.utils import Case, mock_module, patch_many
+from celery.tests.utils import Case, mock_module, patch_many, skip_if_pypy
 
 
 class EventletCase(Case):
 
+    @skip_if_pypy
     def setUp(self):
-        if getattr(sys, 'pypy_version_info', None):
-            raise SkipTest('Does not work on PyPy')
         try:
             self.eventlet = __import__('eventlet')
         except ImportError:

+ 2 - 3
celery/tests/concurrency/test_gevent.py

@@ -13,7 +13,7 @@ from celery.concurrency.gevent import (
     TaskPool,
 )
 
-from celery.tests.utils import Case, mock_module, patch_many
+from celery.tests.utils import Case, mock_module, patch_many, skip_if_pypy
 gevent_modules = (
     'gevent',
     'gevent.monkey',
@@ -25,9 +25,8 @@ gevent_modules = (
 
 class GeventCase(Case):
 
+    @skip_if_pypy
     def setUp(self):
-        if getattr(sys, 'pypy_version_info', None):
-            raise SkipTest('Does not work on PyPy')
         try:
             self.eventlet = __import__('gevent')
         except ImportError:

+ 20 - 0
celery/tests/utils.py

@@ -543,3 +543,23 @@ def assert_signal_called(signal, **expected):
     finally:
         signal.disconnect(call_handler)
     handler.assert_called_with(signal=signal, **expected)
+
+
+def skip_if_pypy(fun):
+
+    @wraps(fun)
+    def _inner(*args, **kwargs):
+        if getattr(sys, 'pypy_version_info', None):
+            raise SkipTest('does not work on PyPy')
+        return fun(*args, **kwargs)
+    return _inner
+
+
+def skip_if_jython(fun):
+
+    @wraps(fun)
+    def _inner(*args, **kwargs):
+        if sys.platform.startswith('java'):
+            raise SkipTest('does not work on Jython')
+        return fun(*args, **kwargs)
+    return _inner