@@ -265,19 +265,16 @@ def print_otel_spans(spans: tuple[ReadableSpan, ...]):
265265def set_test_tracer_provider () -> InMemorySpanExporter :
266266 exporter = InMemorySpanExporter ()
267267
268- # Reset global so tests don't conflict
269- from opentelemetry .util ._once import Once
270-
271- opentelemetry .trace ._TRACER_PROVIDER_SET_ONCE = Once ()
272- opentelemetry .trace ._TRACER_PROVIDER = None
273-
274268 provider = create_tracer_provider ()
275269 provider .add_span_processor (SimpleSpanProcessor (exporter ))
276270 opentelemetry .trace .set_tracer_provider (provider )
277271 return exporter
278272
279273
280- async def test_external_trace_to_workflow_spans (client : Client ):
274+ async def test_external_trace_to_workflow_spans (
275+ client : Client ,
276+ reset_otel_tracer_provider : Any , # type: ignore[reportUnusedParameter]
277+ ):
281278 """Test: External trace -> workflow spans (with worker restart)."""
282279 exporter = set_test_tracer_provider ()
283280 workflow_id = None
@@ -364,7 +361,10 @@ async def ready() -> bool:
364361 ), f"All spans should have unique IDs, got: { span_ids } "
365362
366363
367- async def test_external_trace_and_span_to_workflow_spans (client : Client ):
364+ async def test_external_trace_and_span_to_workflow_spans (
365+ client : Client ,
366+ reset_otel_tracer_provider : Any , # type: ignore[reportUnusedParameter]
367+ ):
368368 """Test: External trace + span -> workflow spans (with worker restart)."""
369369 exporter = set_test_tracer_provider ()
370370 workflow_id = None
@@ -461,7 +461,10 @@ async def ready() -> bool:
461461 ), f"All spans should have unique IDs, got: { span_ids } "
462462
463463
464- async def test_workflow_only_trace_to_spans (client : Client ):
464+ async def test_workflow_only_trace_to_spans (
465+ client : Client ,
466+ reset_otel_tracer_provider : Any , # type: ignore[reportUnusedParameter]
467+ ):
465468 """Test: Workflow-only trace -> spans (with worker restart)."""
466469 exporter = set_test_tracer_provider ()
467470 workflow_id = None
@@ -551,7 +554,10 @@ async def run(self) -> str:
551554 return "done"
552555
553556
554- async def test_custom_span_without_trace_context (client : Client ):
557+ async def test_custom_span_without_trace_context (
558+ client : Client ,
559+ reset_otel_tracer_provider : Any , # type: ignore[reportUnusedParameter]
560+ ):
555561 """Test that custom_span() without a trace context emits no spans.
556562
557563 This validates our hypothesis about why the main test fails:
@@ -591,7 +597,10 @@ async def test_custom_span_without_trace_context(client: Client):
591597 ), f"Expected no spans without trace context, but found: { [s .name for s in spans ]} "
592598
593599
594- async def test_otel_tracing_in_runner (client : Client ):
600+ async def test_otel_tracing_in_runner (
601+ client : Client ,
602+ reset_otel_tracer_provider : Any , # type: ignore[reportUnusedParameter]
603+ ):
595604 """Test the tracing when executing an actual OpenAI Runner."""
596605 exporter = set_test_tracer_provider ()
597606
@@ -750,7 +759,10 @@ def proceed(self) -> None:
750759 self ._proceed = True
751760
752761
753- async def test_sdk_trace_to_otel_span_parenting (client : Client ):
762+ async def test_sdk_trace_to_otel_span_parenting (
763+ client : Client ,
764+ reset_otel_tracer_provider : Any , # type: ignore[reportUnusedParameter]
765+ ):
754766 """Test that OTEL spans started in workflow are properly parented to client SDK trace."""
755767 exporter = set_test_tracer_provider ()
756768 workflow_id = None
0 commit comments