Final_Assignment_Template / tests /test_observability.py
Nigou Julien
Fix Langfuse observation tracing
9c8d6f1
import pytest
from gaia_agent.observability import traced_step
class FakeSpan:
def __init__(self):
self.updates = []
self.ended = False
def update(self, **kwargs):
self.updates.append(kwargs)
def end(self):
self.ended = True
class FakeTrace:
def __init__(self):
self.span = FakeSpan()
def start_observation(self, name, as_type):
self.name = name
self.as_type = as_type
return self.span
def test_traced_step_records_output_then_ends_span():
trace = FakeTrace()
output = traced_step(trace, "step", lambda: {"answer": "Paris"})
assert output == {"answer": "Paris"}
assert trace.name == "step"
assert trace.as_type == "span"
assert trace.span.updates == [{"output": {"answer": "Paris"}}]
assert trace.span.ended is True
def test_traced_step_records_error_then_reraises():
trace = FakeTrace()
with pytest.raises(ValueError):
traced_step(trace, "step", lambda: (_ for _ in ()).throw(ValueError("bad")))
assert trace.span.updates == [{"level": "ERROR", "status_message": "bad"}]
assert trace.span.ended is True