elder-care-copilot / tests /test_trace_artifacts.py
Abhishek
Add all folders and files
f9a9b47
Raw
History Blame Contribute Delete
2.51 kB
from __future__ import annotations
import json
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
SRC = ROOT / 'src'
for candidate in (ROOT, SRC):
if str(candidate) not in sys.path:
sys.path.insert(0, str(candidate))
from app_kit.config import load_app_config
from app_kit.demo_packs import list_demo_packs
from app_kit.eval_runner import run_eval_for_project
from app_kit.storage import SQLiteStore
from apps._base import run_pack_with_trace
from apps.p1_elder_paperwork.app import create_project_spec
def _prepare_env(monkeypatch, tmp_path: Path) -> None:
monkeypatch.setenv('APP_ROOT_DIR', str(ROOT))
monkeypatch.setenv('ARTIFACT_DIR', str(tmp_path / 'artifacts'))
monkeypatch.setenv('SQLITE_PATH', str(tmp_path / 'sqlite' / 'p1.sqlite3'))
def _first_pack_path() -> Path:
spec = create_project_spec()
config = load_app_config(spec.key, data_subdir=spec.data_subdir)
return list_demo_packs(config.data_dir)[0]
def test_app_load_pack_emits_trace_artifact(tmp_path, monkeypatch):
_prepare_env(monkeypatch, tmp_path)
spec = create_project_spec()
config = load_app_config(spec.key, data_subdir=spec.data_subdir)
pack_path = _first_pack_path()
store = SQLiteStore(config.sqlite_path, config.artifact_dir)
try:
output, status, trace_path = run_pack_with_trace(spec, store, config, pack_path)
finally:
store.close()
assert output
assert 'trace' in status.lower()
assert trace_path.exists()
trace = json.loads(trace_path.read_text(encoding='utf-8'))
assert trace['kind'] == 'app-load'
assert trace['project'] == spec.key
assert trace['pack_path'] == str(pack_path)
assert trace['trace_path'] == str(trace_path)
assert trace['timestamp']
assert trace['inputs']
assert 'parsed_outputs' in trace
assert trace['model_name']
def test_eval_runner_emits_trace_artifact(tmp_path, monkeypatch):
_prepare_env(monkeypatch, tmp_path)
pack_path = _first_pack_path()
result = run_eval_for_project('apps.p1_elder_paperwork.app', pack_path)
trace_path = Path(result.trace_path)
assert trace_path.exists()
trace = json.loads(trace_path.read_text(encoding='utf-8'))
assert trace['kind'] == 'eval'
assert trace['project'] == result.project
assert trace['pack_id'] == result.pack_id
assert trace['trace_path'] == str(trace_path)
assert trace['model_id']
assert trace['adapter_name']
assert trace['generation_stats']