"""Tests for experiment matrix and runner.""" import pytest from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from app.db import Base from app.experiments.matrix import generate_full_factorial_matrix from app.model_adapters.factory import create_adapter, list_models from app.prompts.defaults import seed_default_templates def get_test_db(): engine = create_engine("sqlite:///:memory:") Base.metadata.create_all(bind=engine) Session = sessionmaker(bind=engine) return Session() def test_list_models(): assert "deepseek" in list_models() def test_create_adapter_requires_key(): with pytest.raises(ValueError): create_adapter("unknown") def test_generate_matrix(): db = get_test_db() seed_default_templates(db) from app.models import Sample sample = Sample(repo="test", commit_sha="abc", language="python", diff="diff") db.add(sample) db.commit() experiment = generate_full_factorial_matrix( db, name="test-exp", models=["deepseek"], levels=["L1"], sample_ids=[str(sample.id)], repeats=2, ) assert len(experiment.runs) == 2