浏览代码

Tests passing

Ask Solem 11 年之前
父节点
当前提交
30ac352863
共有 4 个文件被更改,包括 29 次插入14 次删除
  1. 1 0
      celery/_state.py
  2. 1 1
      celery/platforms.py
  3. 9 1
      celery/tests/case.py
  4. 18 12
      celery/tests/utils/test_platforms.py

+ 1 - 0
celery/_state.py

@@ -32,6 +32,7 @@ _task_join_will_block = False
 
 
 def _set_task_join_will_block(blocks):
+    print('SET TASK JOIN WILL BLOCK: %r' % (blocks, ))
     global _task_join_will_block
     _task_join_will_block = True
 

+ 1 - 1
celery/platforms.py

@@ -275,7 +275,7 @@ def _create_pidlock(pidfile):
 
 if hasattr(os, 'closerange'):
 
-    def close_open_fds(keep):
+    def close_open_fds(keep=None):
         keep = [maybe_fileno(f)
                 for f in uniq(sorted((keep or [])))
                 if maybe_fileno(f) is not None]

+ 9 - 1
celery/tests/case.py

@@ -315,6 +315,9 @@ class AppCase(Case):
     def setUp(self):
         self._threads_at_setup = list(threading.enumerate())
         from celery import _state
+        from celery import result
+        result.task_join_will_block = \
+            _state.task_join_will_block = lambda: False
         self._current_app = current_app()
         self._default_app = _state.default_app
         trap = Trap()
@@ -327,6 +330,7 @@ class AppCase(Case):
         root = logging.getLogger()
         self.__rootlevel = root.level
         self.__roothandlers = root.handlers
+        _state._set_task_join_will_block(False)
         try:
             self.setup()
         except:
@@ -352,7 +356,11 @@ class AppCase(Case):
                 if isinstance(backend.client, DummyClient):
                     backend.client.cache.clear()
                 backend._cache.clear()
-        from celery._state import _tls, set_default_app
+        from celery._state import (
+            _tls, set_default_app, _set_task_join_will_block,
+        )
+        _set_task_join_will_block(False)
+
         set_default_app(self._default_app)
         _tls.current_app = self._current_app
         if self.app is not self._current_app:

+ 18 - 12
celery/tests/utils/test_platforms.py

@@ -59,13 +59,15 @@ class test_close_open_fds(Case):
 
     def test_closes(self):
         with patch('os.close') as _close:
-            with patch('celery.platforms.get_fdmax') as fdmax:
-                fdmax.return_value = 3
-                close_open_fds()
-                _close.assert_has_calls([call(2), call(1), call(0)])
-                _close.side_effect = OSError()
-                _close.side_effect.errno = errno.EBADF
-                close_open_fds()
+            with patch('os.closerange', create=True) as closerange:
+                with patch('celery.platforms.get_fdmax') as fdmax:
+                    fdmax.return_value = 3
+                    close_open_fds()
+                    if not closerange.called:
+                        _close.assert_has_calls([call(2), call(1), call(0)])
+                        _close.side_effect = OSError()
+                        _close.side_effect.errno = errno.EBADF
+                    close_open_fds()
 
 
 class test_ignore_errno(Case):
@@ -151,14 +153,18 @@ if not platforms.IS_WINDOWS:
 
         @patch('resource.getrlimit')
         def test_when_infinity(self, getrlimit):
-            getrlimit.return_value = [None, resource.RLIM_INFINITY]
-            default = object()
-            self.assertIs(get_fdmax(default), default)
+            with patch('os.sysconf') as sysconfig:
+                sysconfig.side_effect = KeyError()
+                getrlimit.return_value = [None, resource.RLIM_INFINITY]
+                default = object()
+                self.assertIs(get_fdmax(default), default)
 
         @patch('resource.getrlimit')
         def test_when_actual(self, getrlimit):
-            getrlimit.return_value = [None, 13]
-            self.assertEqual(get_fdmax(None), 13)
+            with patch('os.sysconf') as sysconfig:
+                sysconfig.side_effect = KeyError()
+                getrlimit.return_value = [None, 13]
+                self.assertEqual(get_fdmax(None), 13)
 
     class test_maybe_drop_privileges(Case):