kin: KIN-048 Post-pipeline hook: автокоммит после успешного завершения задачи. git add -A && git commit -m 'kin: TASK_ID TITLE'. Срабатывает автоматически как rebuild-frontend.
This commit is contained in:
parent
8a6f280cbd
commit
ae21e48b65
13 changed files with 1554 additions and 65 deletions
|
|
@ -342,6 +342,19 @@ def test_patch_task_empty_body_returns_400(client):
|
|||
assert r.status_code == 400
|
||||
|
||||
|
||||
def test_patch_task_execution_mode_auto_complete_accepted(client):
|
||||
"""KIN-063: execution_mode='auto_complete' принимается (200)."""
|
||||
r = client.patch("/api/tasks/P1-001", json={"execution_mode": "auto_complete"})
|
||||
assert r.status_code == 200
|
||||
assert r.json()["execution_mode"] == "auto_complete"
|
||||
|
||||
|
||||
def test_patch_task_execution_mode_auto_rejected(client):
|
||||
"""KIN-063: старое значение 'auto' должно отклоняться (400) — Decision #29."""
|
||||
r = client.patch("/api/tasks/P1-001", json={"execution_mode": "auto"})
|
||||
assert r.status_code == 400
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# KIN-022 — blocked_reason: регрессионные тесты
|
||||
# ---------------------------------------------------------------------------
|
||||
|
|
@ -589,3 +602,27 @@ def test_run_kin_040_allow_write_true_ignored(client):
|
|||
Эндпоинт не имеет body-параметра, поэтому FastAPI не валидирует тело."""
|
||||
r = client.post("/api/tasks/P1-001/run", json={"allow_write": True})
|
||||
assert r.status_code == 202
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# KIN-058 — регрессионный тест: stderr=DEVNULL у Popen в web API
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def test_run_sets_stderr_devnull(client):
|
||||
"""Регрессионный тест KIN-058: stderr=DEVNULL всегда устанавливается в Popen,
|
||||
чтобы stderr дочернего процесса не загрязнял логи uvicorn."""
|
||||
import subprocess as _subprocess
|
||||
from unittest.mock import patch, MagicMock
|
||||
with patch("web.api.subprocess.Popen") as mock_popen:
|
||||
mock_proc = MagicMock()
|
||||
mock_proc.pid = 77
|
||||
mock_popen.return_value = mock_proc
|
||||
|
||||
r = client.post("/api/tasks/P1-001/run")
|
||||
assert r.status_code == 202
|
||||
|
||||
call_kwargs = mock_popen.call_args[1]
|
||||
assert call_kwargs.get("stderr") == _subprocess.DEVNULL, (
|
||||
"Регрессия KIN-058: stderr у Popen должен быть DEVNULL, "
|
||||
"иначе вывод агента попадает в логи uvicorn"
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue