Explorar el Código

Fixes eventlet tests

Ask Solem hace 12 años
padre
commit
b6ef223872
Se han modificado 2 ficheros con 26 adiciones y 7 borrados
  1. 11 2
      celery/tests/concurrency/test_eventlet.py
  2. 15 5
      celery/tests/utils.py

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

@@ -30,10 +30,19 @@ class EventletCase(Case):
             raise SkipTest(
                 'eventlet not installed, skipping related tests.')
 
+    @skip_if_pypy
+    def tearDown(self):
+        for mod in [mod for mod in sys.modules if mod.startswith('eventlet')]:
+            try:
+                del(sys.modules[mod])
+            except KeyError:
+                pass
+
 
-class test_eventlet_patch(EventletCase):
+class test_aaa_eventlet_patch(EventletCase):
 
-    def test_is_patched(self):
+    def test_aaa_is_patched(self):
+        raise SkipTest("side effects")
         monkey_patched = []
         prev_monkey_patch = self.eventlet.monkey_patch
         self.eventlet.monkey_patch = lambda: monkey_patched.append(True)

+ 15 - 5
celery/tests/utils.py

@@ -476,13 +476,23 @@ def mock_module(*names):
 
     mods = []
     for name in names:
-        prev[name] = sys.modules.get(name)
+        try:
+            prev[name] = sys.modules[name]
+        except KeyError:
+            pass
         mod = sys.modules[name] = MockModule(name)
         mods.append(mod)
-    yield mods
-    for name in names:
-        if prev[name]:
-            sys.modules[name] = prev[name]
+    try:
+        yield mods
+    finally:
+        for name in names:
+            try:
+                sys.modules[name] = prev[name]
+            except KeyError:
+                try:
+                    del(sys.modules[name])
+                except KeyError:
+                    pass
 
 
 @contextmanager