smol-town / tests /test_trace.py
SID2000's picture
Upload folder using huggingface_hub
4b536ba verified
Raw
History Blame Contribute Delete
1.6 kB
import json
import os
import unittest
import app
import town
class TraceTest(unittest.TestCase):
def test_act_records_generation_trace(self):
original_generate = town.GENERATE
town.GENERATE = lambda system, user: '"A tidy test line."'
try:
state = town.TownState()
town.inject(state, "The bell rings.")
state.tick = 1
town.act(state, town.CAST[0])
self.assertEqual(len(state.traces), 1)
trace = state.traces[0]
self.assertEqual(trace["tick"], 1)
self.assertEqual(trace["speaker"], "Mayor Doreen")
self.assertEqual(trace["role"], "mayor")
self.assertEqual(trace["model"], town.AGENT_MODEL)
self.assertEqual(trace["context"], ["📢: The bell rings."])
self.assertEqual(trace["output"], "A tidy test line.")
self.assertTrue(trace["system"].startswith("You are Mayor Doreen"))
self.assertTrue(trace["ts"].endswith("Z"))
finally:
town.GENERATE = original_generate
def test_download_trace_writes_jsonl(self):
state = town.TownState(traces=[{"tick": 1, "output": "café"}])
path = app.download_trace(state)
try:
with open(path, encoding="utf-8") as trace_file:
self.assertEqual(json.loads(trace_file.read()), state.traces[0])
finally:
os.unlink(path)
def test_download_trace_handles_missing_state(self):
self.assertIsNone(app.download_trace(None))
if __name__ == "__main__":
unittest.main()