feat. Enforce repo review config
This commit is contained in:
@@ -10,6 +10,7 @@ from gitea_codex_bot.db import get_session_factory
|
||||
from gitea_codex_bot.models import ReviewJob
|
||||
from gitea_codex_bot.services.comments import get_persistent_review_comment_id, upsert_persistent_review_comment_id
|
||||
from gitea_codex_bot.services.jobs import enqueue_job
|
||||
from gitea_codex_bot.services.repo_config import RepoReviewConfig
|
||||
from gitea_codex_bot.types import ParsedCommand
|
||||
from gitea_codex_bot.workers.dispatcher import process_one_job
|
||||
|
||||
@@ -37,12 +38,15 @@ def test_process_one_job_recreates_persistent_comment_when_edit_returns_404(monk
|
||||
|
||||
monkeypatch.setattr(
|
||||
"gitea_codex_bot.workers.dispatcher.run_review_ephemeral",
|
||||
lambda *_args, **_kwargs: {
|
||||
"verdict": "has_issues",
|
||||
"confidence": 0.7,
|
||||
"summary": "runner error",
|
||||
"findings": [],
|
||||
},
|
||||
lambda *_args, **_kwargs: (
|
||||
{
|
||||
"verdict": "has_issues",
|
||||
"confidence": 0.7,
|
||||
"summary": "runner error",
|
||||
"findings": [],
|
||||
},
|
||||
RepoReviewConfig(configured=True, enabled=True),
|
||||
),
|
||||
)
|
||||
|
||||
class _FakeGiteaClient:
|
||||
@@ -91,7 +95,7 @@ def test_process_one_job_passes_full_trigger_message_to_runner(monkeypatch) -> N
|
||||
|
||||
def _fake_run_review_ephemeral(_settings, *, repo: str, pr_number: int, command: ParsedCommand):
|
||||
captured["raw"] = command.raw
|
||||
return {"verdict": "correct", "confidence": 0.9, "summary": "ok", "findings": []}
|
||||
return {"verdict": "correct", "confidence": 0.9, "summary": "ok", "findings": []}, RepoReviewConfig(configured=True, enabled=True)
|
||||
|
||||
class _FakeGiteaClient:
|
||||
def __init__(self, _settings) -> None:
|
||||
@@ -113,3 +117,49 @@ def test_process_one_job_passes_full_trigger_message_to_runner(monkeypatch) -> N
|
||||
processed = process_one_job(settings)
|
||||
assert processed is True
|
||||
assert captured["raw"] == "@codex review security --full\nFocus auth/session handling."
|
||||
|
||||
|
||||
def test_process_one_job_skips_review_when_repo_config_disabled(monkeypatch) -> None:
|
||||
posted_comments: list[str] = []
|
||||
session_factory = get_session_factory()
|
||||
with session_factory() as session:
|
||||
job = enqueue_job(
|
||||
session,
|
||||
repo="acme/repo",
|
||||
pr_number=11,
|
||||
head_sha="badc0de",
|
||||
trigger_comment_id=113,
|
||||
trigger_comment_body="@codex review",
|
||||
requested_by="alice",
|
||||
command=ParsedCommand(name="review", raw="@codex review"),
|
||||
)
|
||||
|
||||
monkeypatch.setattr(
|
||||
"gitea_codex_bot.workers.dispatcher.run_review_ephemeral",
|
||||
lambda *_args, **_kwargs: (
|
||||
{"verdict": "correct", "confidence": 1.0, "summary": "ok", "findings": []},
|
||||
RepoReviewConfig(configured=True, enabled=False),
|
||||
),
|
||||
)
|
||||
|
||||
class _FakeGiteaClient:
|
||||
def __init__(self, _settings) -> None:
|
||||
pass
|
||||
|
||||
def get_pull_request(self, _repo: str, _pr_number: int):
|
||||
return SimpleNamespace(is_fork=False)
|
||||
|
||||
def post_issue_comment(self, _repo: str, _pr_number: int, body: str) -> int:
|
||||
posted_comments.append(body)
|
||||
return 902
|
||||
|
||||
monkeypatch.setattr("gitea_codex_bot.workers.dispatcher.GiteaClient", _FakeGiteaClient)
|
||||
|
||||
settings = get_settings()
|
||||
processed = process_one_job(settings)
|
||||
assert processed is True
|
||||
assert any("Review is disabled" in body for body in posted_comments)
|
||||
|
||||
with session_factory() as session:
|
||||
stored_job = session.execute(select(ReviewJob).where(ReviewJob.id == job.id)).scalar_one()
|
||||
assert stored_job.status.value == "skipped"
|
||||
|
||||
Reference in New Issue
Block a user