Browse Source

Acccidentally checked in coverage files

Ask Solem 13 years ago
parent
commit
546e75e76e
1 changed files with 44 additions and 2 deletions
  1. 44 2
      celery/tests/test_task/test_execute_trace.py

+ 44 - 2
celery/tests/test_task/test_execute_trace.py

@@ -1,11 +1,13 @@
 from __future__ import absolute_import
 from __future__ import with_statement
 
+from mock import patch
+
 from celery import current_app
 from celery import states
 from celery.exceptions import RetryTaskError
-from celery.execute.trace import eager_trace_task
-from celery.tests.utils import Case
+from celery.execute.trace import TraceInfo, eager_trace_task, trace_task
+from celery.tests.utils import Case, Mock
 
 
 @current_app.task
@@ -13,6 +15,11 @@ def add(x, y):
     return x + y
 
 
+@current_app.task(ignore_result=True)
+def add_cast(x, y):
+    return x + y
+
+
 @current_app.task
 def raises(exc):
     raise exc
@@ -49,3 +56,38 @@ class test_trace(Case):
     def test_trace_exception_propagate(self):
         with self.assertRaises(KeyError):
             trace(raises, (KeyError("foo"), ), {}, propagate=True)
+
+    @patch("celery.execute.trace.build_tracer")
+    @patch("celery.execute.trace.report_internal_error")
+    def test_outside_body_error(self, report_internal_error, build_tracer):
+        tracer = Mock()
+        tracer.side_effect = KeyError("foo")
+        build_tracer.return_value = tracer
+
+        @current_app.task
+        def xtask():
+            pass
+
+        trace_task(xtask, "uuid", (), {})
+        self.assertTrue(report_internal_error.call_count)
+        self.assertIs(xtask.__tracer__, tracer)
+
+
+class test_TraceInfo(Case):
+
+    class TI(TraceInfo):
+        __slots__ = TraceInfo.__slots__ + ("__dict__", )
+
+    def test_without_exc_info(self):
+        x = TraceInfo(states.SUCCESS)
+        self.assertIsNone(x.exc_type)
+        self.assertIsNone(x.exc_value)
+        self.assertIsNone(x.tb)
+        self.assertEqual(x.strtb, '')
+
+    def test_handle_error_state(self):
+        x = self.TI(states.FAILURE)
+        x.handle_failure = Mock()
+        x.handle_error_state(add_cast)
+        x.handle_failure.assert_called_with(add_cast,
+                store_errors=add_cast.store_errors_even_if_ignored)