kin: auto-commit after pipeline
This commit is contained in:
parent
396f5193d3
commit
18160de45e
9 changed files with 449 additions and 0 deletions
|
|
@ -213,6 +213,22 @@ class TestRunProjectTests:
|
|||
assert result["success"] is False
|
||||
assert result["returncode"] == 127
|
||||
|
||||
def test_run_project_tests_empty_string_returns_failure(self):
|
||||
"""KIN-ARCH-008 AC#7: пустая строка test_command возвращает returncode -1, success=False."""
|
||||
from agents.runner import _run_project_tests
|
||||
result = _run_project_tests("/fake/path", test_command="")
|
||||
assert result["success"] is False
|
||||
assert result["returncode"] == -1
|
||||
assert "Empty test_command" in result["output"]
|
||||
|
||||
def test_returncode_127_output_contains_not_found(self):
|
||||
"""KIN-ARCH-008 AC#7: при returncode 127 вывод содержит 'not found' для диагностики."""
|
||||
from agents.runner import _run_project_tests
|
||||
with patch("agents.runner.subprocess.run", side_effect=FileNotFoundError), \
|
||||
patch("agents.runner.shutil.which", return_value=None):
|
||||
result = _run_project_tests("/fake/path", test_command="badcmd")
|
||||
assert "not found" in result["output"].lower()
|
||||
|
||||
|
||||
def _mock_success(output="done"):
|
||||
m = MagicMock()
|
||||
|
|
@ -359,6 +375,30 @@ class TestAutoTestInPipeline:
|
|||
called_test_command = mock_tests.call_args[0][1]
|
||||
assert called_test_command == "npm test"
|
||||
|
||||
@patch("agents.runner._run_autocommit")
|
||||
@patch("agents.runner._run_project_tests")
|
||||
@patch("agents.runner.subprocess.run")
|
||||
def test_auto_test_returncode_127_blocks_task(
|
||||
self, mock_run, mock_tests, mock_autocommit, conn
|
||||
):
|
||||
"""KIN-ARCH-008 AC#7: returncode 127 (команда не найдена) исчерпывает попытки и блокирует задачу."""
|
||||
from agents.runner import run_pipeline
|
||||
from core import models
|
||||
import os
|
||||
|
||||
mock_run.return_value = _mock_success()
|
||||
# Команда не найдена — всегда 127, always fails
|
||||
mock_tests.return_value = {"success": False, "output": "badcmd not found in PATH", "returncode": 127}
|
||||
models.update_project(conn, "vdol", auto_test_enabled=True, test_command="badcmd")
|
||||
|
||||
with patch.dict(os.environ, {"KIN_AUTO_TEST_MAX_ATTEMPTS": "1"}):
|
||||
steps = [{"role": "backend_dev", "brief": "implement"}]
|
||||
result = run_pipeline(conn, "VDOL-001", steps)
|
||||
|
||||
assert result["success"] is False
|
||||
task = models.get_task(conn, "VDOL-001")
|
||||
assert task["status"] == "blocked"
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# (3) Spec-driven workflow route
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue