@@ -509,6 +509,55 @@ def test_task_filter_applies_to_worker_lifecycle_events(self):
509509
510510 mock_client .capture .assert_not_called ()
511511
512+ def test_task_filter_applies_to_failure_exception_and_lifecycle_event (self ):
513+ mock_client = Mock ()
514+ task_filter = Mock (return_value = False )
515+ integration = PosthogCeleryIntegration (
516+ client = mock_client ,
517+ task_filter = task_filter ,
518+ )
519+ request = SimpleNamespace (headers = {}, delivery_info = {})
520+ task = SimpleNamespace (name = "app.tasks.filtered_failure" , request = request )
521+ exception = ValueError ("task failed" )
522+ context_before = contexts ._get_current_context ()
523+
524+ integration ._on_task_prerun (sender = task , task_id = "task-filtered-failure" )
525+ task_filter .reset_mock ()
526+ integration ._on_task_failure (
527+ sender = task ,
528+ task_id = "task-filtered-failure" ,
529+ exception = exception ,
530+ )
531+
532+ task_filter .assert_called_once ()
533+ mock_client .capture .assert_not_called ()
534+ mock_client .capture_exception .assert_not_called ()
535+ self .assertIs (contexts ._get_current_context (), context_before )
536+
537+ def test_task_filter_applies_to_retry_lifecycle_event (self ):
538+ mock_client = Mock ()
539+ task_filter = Mock (return_value = False )
540+ integration = PosthogCeleryIntegration (
541+ client = mock_client ,
542+ task_filter = task_filter ,
543+ )
544+ request = SimpleNamespace (headers = {}, delivery_info = {})
545+ task = SimpleNamespace (name = "app.tasks.filtered_retry" , request = request )
546+ context_before = contexts ._get_current_context ()
547+
548+ integration ._on_task_prerun (sender = task , task_id = "task-filtered-retry" )
549+ task_filter .reset_mock ()
550+ integration ._on_task_retry (
551+ sender = task ,
552+ task_id = "task-filtered-retry" ,
553+ reason = ConnectionError ("broker down" ),
554+ )
555+
556+ task_filter .assert_called_once ()
557+ mock_client .capture .assert_not_called ()
558+ mock_client .capture_exception .assert_not_called ()
559+ self .assertIs (contexts ._get_current_context (), context_before )
560+
512561 def test_task_failure_captures_exception_when_lifecycle_events_disabled (self ):
513562 mock_client = Mock ()
514563 integration = PosthogCeleryIntegration (
0 commit comments