Browse Source

Cosmetics for #3079

Ask Solem 9 years ago
parent
commit
426292262a

+ 10 - 1
celery/tests/backends/test_cache.py

@@ -16,7 +16,7 @@ from celery.five import items, string, text_t
 from celery.utils import uuid
 
 from celery.tests.case import (
-    AppCase, Mock, mask_modules, patch, reset_modules,
+    AppCase, Mock, disable_stdouts, mask_modules, patch, reset_modules,
 )
 
 PY3 = sys.version_info[0] == 3
@@ -136,6 +136,15 @@ class test_CacheBackend(AppCase):
         b = CacheBackend(backend=backend, app=self.app)
         self.assertEqual(b.as_uri(), backend)
 
+    @disable_stdouts
+    def test_regression_worker_startup_info(self):
+        self.app.conf.result_backend = (
+            "cache+memcached://127.0.0.1:11211;127.0.0.2:11211;127.0.0.3/"
+        )
+        worker = self.app.Worker()
+        worker.on_start()
+        self.assertTrue(worker.startup_info())
+
 
 class MyMemcachedStringEncodingError(Exception):
     pass

+ 15 - 2
celery/tests/backends/test_mongodb.py

@@ -15,7 +15,7 @@ from celery.backends.mongodb import (
 from celery.exceptions import ImproperlyConfigured
 from celery.tests.case import (
     AppCase, MagicMock, Mock, SkipTest, ANY,
-    depends_on_current_app, patch, sentinel,
+    depends_on_current_app, disable_stdouts, patch, sentinel,
 )
 
 COLLECTION = 'taskmeta_celery'
@@ -32,7 +32,10 @@ MONGODB_GROUP_COLLECTION = 'group_collection1'
 class test_MongoBackend(AppCase):
 
     default_url = "mongodb://uuuu:pwpw@hostname.dom/database"
-    replica_set_url = "mongodb://uuuu:pwpw@hostname.dom,hostname.dom/database?replicaSet=rs"
+    replica_set_url = (
+        "mongodb://uuuu:pwpw@hostname.dom,"
+        "hostname.dom/database?replicaSet=rs"
+    )
     sanitized_default_url = default_url.replace("pwpw", "**")
     sanitized_replica_set_url = replica_set_url.replace("pwpw", "**")
 
@@ -404,6 +407,16 @@ class test_MongoBackend(AppCase):
         backend = MongoBackend(app=self.app, url=self.replica_set_url)
         self.assertEqual(backend.as_uri(), self.sanitized_replica_set_url)
 
+    @disable_stdouts
+    def test_regression_worker_startup_info(self):
+        self.app.conf.result_backend = (
+            "mongodb://user:password@host0.com:43437,host1.com:43437"
+            "/work4us?replicaSet=rs&ssl=true"
+        )
+        worker = self.app.Worker()
+        worker.on_start()
+        self.assertTrue(worker.startup_info())
+
 
 class test_MongoBackend_no_mock(AppCase):
 

+ 1 - 36
celery/tests/bin/test_worker.py

@@ -4,8 +4,6 @@ import logging
 import os
 import sys
 
-from functools import wraps
-
 from billiard.process import current_process
 from kombu import Exchange, Queue
 
@@ -24,7 +22,7 @@ from celery.tests.case import (
     AppCase,
     Mock,
     SkipTest,
-    WhateverIO,
+    disable_stdouts,
     patch,
     skip_if_pypy,
     skip_if_jython,
@@ -38,25 +36,6 @@ class WorkerAppCase(AppCase):
         trace.reset_worker_optimizations()
 
 
-def disable_stdouts(fun):
-
-    @wraps(fun)
-    def disable(*args, **kwargs):
-        prev_out, prev_err = sys.stdout, sys.stderr
-        prev_rout, prev_rerr = sys.__stdout__, sys.__stderr__
-        sys.stdout = sys.__stdout__ = WhateverIO()
-        sys.stderr = sys.__stderr__ = WhateverIO()
-        try:
-            return fun(*args, **kwargs)
-        finally:
-            sys.stdout = prev_out
-            sys.stderr = prev_err
-            sys.__stdout__ = prev_rout
-            sys.__stderr__ = prev_rerr
-
-    return disable
-
-
 class Worker(cd.Worker):
     redirect_stdouts = False
 
@@ -209,20 +188,6 @@ class test_Worker(WorkerAppCase):
         finally:
             cd.ARTLINES = prev
 
-    @disable_stdouts
-    def test_startup_info_mongo_result_backend(self):
-        self.app.conf.result_backend = "mongodb://user:password@host0.com:43437,host1.com:43437/work4us?replicaSet=rs&ssl=true"
-        worker = self.Worker(app=self.app)
-        worker.on_start()
-        self.assertTrue(worker.startup_info())
-
-    @disable_stdouts
-    def test_startup_info_memcached_result_backend(self):
-        self.app.conf.result_backend = "cache+memcached://127.0.0.1:11211;127.0.0.2:11211;127.0.0.3/"
-        worker = self.Worker(app=self.app)
-        worker.on_start()
-        self.assertTrue(worker.startup_info())
-
     @disable_stdouts
     def test_run(self):
         self.Worker(app=self.app).on_start()

+ 14 - 2
celery/tests/case.py

@@ -715,6 +715,7 @@ def mask_modules(*modnames):
 def override_stdouts():
     """Override `sys.stdout` and `sys.stderr` with `WhateverIO`."""
     prev_out, prev_err = sys.stdout, sys.stderr
+    prev_rout, prev_rerr = sys.__stdout__, sys.__stderr__
     mystdout, mystderr = WhateverIO(), WhateverIO()
     sys.stdout = sys.__stdout__ = mystdout
     sys.stderr = sys.__stderr__ = mystderr
@@ -722,8 +723,19 @@ def override_stdouts():
     try:
         yield mystdout, mystderr
     finally:
-        sys.stdout = sys.__stdout__ = prev_out
-        sys.stderr = sys.__stderr__ = prev_err
+        sys.stdout = prev_out
+        sys.stderr = prev_err
+        sys.__stdout__ = prev_rout
+        sys.__stderr__ = prev_rerr
+
+
+def disable_stdouts(fun):
+
+    @wraps(fun)
+    def disable(*args, **kwargs):
+        with override_stdouts():
+            return fun(*args, **kwargs)
+    return disable
 
 
 def _old_patch(module, name, mocked):