feat: add gitea agentic runtime control plane
This commit is contained in:
84
tests/unit/test_cli.py
Normal file
84
tests/unit/test_cli.py
Normal file
@@ -0,0 +1,84 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
from engine.devops_agent import cli
|
||||
|
||||
|
||||
class FakeProvider:
|
||||
def __init__(self, *, base_url: str, token: str) -> None:
|
||||
self.base_url = base_url
|
||||
self.token = token
|
||||
|
||||
def parse_issue_comment_event(self, payload: dict[str, object]) -> dict[str, object]:
|
||||
repository = payload["repository"]
|
||||
issue = payload["issue"]
|
||||
comment = payload["comment"]
|
||||
return {
|
||||
"repo": repository["full_name"],
|
||||
"issue_number": issue["number"],
|
||||
"comment_body": comment["body"],
|
||||
}
|
||||
|
||||
def get_issue(self, repo: str, issue_number: int) -> dict[str, object]:
|
||||
return {
|
||||
"number": issue_number,
|
||||
"title": "Fix issue delivery flow",
|
||||
"body": "The agent should post evidence back to the issue.",
|
||||
"state": "open",
|
||||
"repo": repo,
|
||||
}
|
||||
|
||||
def post_issue_comment(self, repo: str, issue_number: int, body: str) -> dict[str, object]:
|
||||
return {"id": 1, "repo": repo, "issue_number": issue_number, "body": body}
|
||||
|
||||
|
||||
def test_compile_command_writes_lock_file() -> None:
|
||||
output_path = Path(".tmp/cli-tests/gitea-issue-delivery.lock.json")
|
||||
output_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
exit_code = cli.main(
|
||||
[
|
||||
"compile",
|
||||
"workflows/gitea-issue-delivery.md",
|
||||
"--output",
|
||||
str(output_path),
|
||||
]
|
||||
)
|
||||
|
||||
assert exit_code == 0
|
||||
assert output_path.exists()
|
||||
|
||||
|
||||
def test_validate_command_returns_success() -> None:
|
||||
exit_code = cli.main(["validate", "workflows/gitea-issue-delivery.md"])
|
||||
|
||||
assert exit_code == 0
|
||||
|
||||
|
||||
def test_run_command_writes_runtime_artifact(monkeypatch) -> None:
|
||||
output_dir = Path(".tmp/cli-tests/runtime-run")
|
||||
output_dir.mkdir(parents=True, exist_ok=True)
|
||||
monkeypatch.setattr(cli, "GiteaProvider", FakeProvider)
|
||||
|
||||
exit_code = cli.main(
|
||||
[
|
||||
"run",
|
||||
"workflows/gitea-issue-delivery.md",
|
||||
"--event-payload",
|
||||
"tests/fixtures/gitea/comment_event.json",
|
||||
"--output-dir",
|
||||
str(output_dir),
|
||||
"--base-url",
|
||||
"https://fun-md.com",
|
||||
"--token",
|
||||
"fake-token",
|
||||
]
|
||||
)
|
||||
|
||||
artifact_path = output_dir / "run-artifact.json"
|
||||
artifact = json.loads(artifact_path.read_text(encoding="utf-8"))
|
||||
|
||||
assert exit_code == 0
|
||||
assert artifact["result"] == "success"
|
||||
Reference in New Issue
Block a user