generated from coulomb/repo-seed
Hardened the optional LLM extraction path
This commit is contained in:
@@ -22,6 +22,11 @@ class FakeLLMExtractor:
|
||||
return self.abilities
|
||||
|
||||
|
||||
class FailingLLMExtractor:
|
||||
def extract(self, repository, chunks):
|
||||
raise RuntimeError("provider unavailable")
|
||||
|
||||
|
||||
def test_manual_registry_builds_ability_map(tmp_path):
|
||||
service = make_service(tmp_path)
|
||||
|
||||
@@ -435,6 +440,29 @@ def test_analyze_repository_falls_back_when_optional_llm_extractor_returns_no_ca
|
||||
assert graph.abilities[0].name == "Review Fallback Repository Usefulness"
|
||||
|
||||
|
||||
def test_analyze_repository_records_llm_failure_and_falls_back(tmp_path):
|
||||
source = tmp_path / "repo"
|
||||
source.mkdir()
|
||||
(source / "README.md").write_text("# Failing LLM\n", encoding="utf-8")
|
||||
store = RegistryStore(tmp_path / "registry.sqlite3")
|
||||
store.initialize()
|
||||
service = RegistryService(
|
||||
store,
|
||||
ingestion=GitIngestionService(tmp_path / "checkouts"),
|
||||
llm_extractor=FailingLLMExtractor(),
|
||||
)
|
||||
repository = service.register_repository(name="Failing LLM", url=str(source))
|
||||
|
||||
summary = service.analyze_repository(repository.id)
|
||||
graph = service.candidate_graph(repository.id, summary.analysis_run.id)
|
||||
decisions = service.list_review_decisions(repository.id, summary.analysis_run.id)
|
||||
|
||||
assert summary.analysis_run.status == "completed"
|
||||
assert graph.abilities[0].name == "Review Failing LLM Repository Usefulness"
|
||||
assert decisions[0].action == "llm_extraction_failed"
|
||||
assert "provider unavailable" in decisions[0].notes
|
||||
|
||||
|
||||
def test_approve_candidate_graph_publishes_ability_map_once(tmp_path):
|
||||
source = tmp_path / "repo"
|
||||
source.mkdir()
|
||||
|
||||
Reference in New Issue
Block a user