first commit

This commit is contained in:
eeymoo
2026-09-19 12:54:45 +08:00
commit 6fc5b64077
126 changed files with 8601 additions and 0 deletions
+61
View File
@@ -0,0 +1,61 @@
"""Tests for analysis service."""
import pytest
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from app.analysis.service import AnalysisService
from app.db import Base
from app.models import Defect, ExperimentRun, PromptTemplate, PromptTemplateVersion, Result, Sample
def get_test_db():
engine = create_engine("sqlite:///:memory:")
Base.metadata.create_all(bind=engine)
Session = sessionmaker(bind=engine)
return Session()
def test_compute_metrics_for_run():
db = get_test_db()
sample = Sample(repo="r", commit_sha="abc", language="python", diff="diff")
defect = Defect(
sample=sample,
defect_type="null_pointer",
language="python",
line_start=5,
line_end=5,
)
db.add(sample)
db.commit()
from uuid import uuid4
template = PromptTemplate(strategy_id="code_review", level="L1")
version = PromptTemplateVersion(
template=template, version_number=1, body="", variables_schema={}
)
db.add(template)
db.commit()
run = ExperimentRun(
id=uuid4(),
experiment_id=uuid4(),
sample_id=sample.id,
model_id="deepseek",
template_version_id=version.id,
repeat_index=1,
status="done",
)
db.add(run)
db.flush()
result = Result(
run_id=run.id,
raw_output="- null_pointer",
)
db.add(result)
db.commit()
service = AnalysisService(db)
metrics = service.compute_metrics_for_run(str(run.id))
assert metrics["detection_rate"] == 1.0