Skip to content

Commit b2df11b

Browse files
committed
fix(test): make OTel span test independent of global tracer provider
CI environments import the full SDK which sets a global TracerProvider. OTel silently ignores subsequent set_tracer_provider calls, so the test's in-memory exporter never received spans. Build the tracer directly from a local provider instead of relying on the global one.
1 parent f8bd0f5 commit b2df11b

1 file changed

Lines changed: 7 additions & 4 deletions

File tree

tests/tool_safety/test_audit.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,20 +77,23 @@ def test_telemetry_sets_span_attributes_when_recording():
7777

7878
from opentelemetry import trace
7979

80+
# Use a dedicated provider with an in-memory exporter. We do NOT call
81+
# set_tracer_provider: the global provider may already be set by the SDK
82+
# and OTel silently ignores subsequent calls. Instead we build a tracer
83+
# directly from our provider so span export is self-contained.
8084
exporter = InMemorySpanExporter()
8185
provider = TracerProvider()
8286
provider.add_span_processor(SimpleSpanProcessor(exporter))
83-
trace.set_tracer_provider(provider)
84-
tracer = trace.get_tracer("test")
87+
tracer = provider.get_tracer("safety-test")
8588

8689
scanner = SafetyScanner(PolicyConfig())
8790
inp = ScanInput(script="rm -rf /", language="bash")
88-
with tracer.start_as_current_span("safety-test"):
91+
with tracer.start_as_current_span("safety-test") as span:
8992
report = scanner.scan(inp)
9093
_emit_telemetry(report)
9194

9295
spans = exporter.get_finished_spans()
93-
assert spans
96+
assert spans, "no spans exported — provider not wired"
9497
attrs = spans[-1].attributes
9598
assert attrs.get("tool.safety.decision") == "deny"
9699
assert attrs.get("tool.safety.risk_level") in ("high", "critical")

0 commit comments

Comments
 (0)