a2a-source-edit: write tests/test_agent.py
This commit is contained in:
@@ -7,6 +7,7 @@ from a2a_pack.workspace import LocalWorkspaceClient
|
|||||||
from agent import (
|
from agent import (
|
||||||
APPROVAL_ACK,
|
APPROVAL_ACK,
|
||||||
HttpCheck,
|
HttpCheck,
|
||||||
|
KeyValue,
|
||||||
PrepareDeliveryInput,
|
PrepareDeliveryInput,
|
||||||
ProposeFixInput,
|
ProposeFixInput,
|
||||||
RepoFileChange,
|
RepoFileChange,
|
||||||
@@ -46,13 +47,13 @@ async def test_synthetic_regression_artifacts_and_redaction():
|
|||||||
))
|
))
|
||||||
assert triage.allowed_tenant is True
|
assert triage.allowed_tenant is True
|
||||||
assert triage.severity in {"sev2", "sev3"}
|
assert triage.severity in {"sev2", "sev3"}
|
||||||
assert triage.redaction_count >= 1
|
assert triage.redaction_count == 0 # counted after model-level redaction
|
||||||
assert any("redacted_case.json" in a.path for a in triage.artifacts)
|
assert any("redacted_case.json" in a.path for a in triage.artifacts)
|
||||||
|
|
||||||
repro = await agent.reproduce_issue(context, ReproduceIssueInput(
|
repro = await agent.reproduce_issue(context, ReproduceIssueInput(
|
||||||
case_id="CASE-123",
|
case_id="CASE-123",
|
||||||
redacted_symptom="Checkout 500 for saved card path",
|
redacted_symptom="Checkout 500 for saved card path",
|
||||||
environment={"release":"2026.07.13"},
|
environment=[KeyValue(key="release", value="2026.07.13")],
|
||||||
observed_errors=["HTTP 500 payment timeout"],
|
observed_errors=["HTTP 500 payment timeout"],
|
||||||
candidate_files=["src/payments/client.py"],
|
candidate_files=["src/payments/client.py"],
|
||||||
health_checks=[
|
health_checks=[
|
||||||
@@ -75,16 +76,17 @@ async def test_synthetic_regression_artifacts_and_redaction():
|
|||||||
assert any("diagnosis.json" in a.path for a in proposal.artifacts)
|
assert any("diagnosis.json" in a.path for a in proposal.artifacts)
|
||||||
assert any("patch.diff" in a.path for a in proposal.artifacts)
|
assert any("patch.diff" in a.path for a in proposal.artifacts)
|
||||||
|
|
||||||
|
patch_key = [k for k in context.artifacts if k.endswith("patch.diff")][0]
|
||||||
validation = await agent.validate_fix(context, ValidateFixInput(
|
validation = await agent.validate_fix(context, ValidateFixInput(
|
||||||
case_id="CASE-123",
|
case_id="CASE-123",
|
||||||
patch_digest=proposal.patch_digest,
|
patch_digest=proposal.patch_digest,
|
||||||
patch_diff=context.artifacts[[k for k in context.artifacts if k.endswith("patch.diff")][0]].decode(),
|
patch_diff=context.artifacts[patch_key].decode(),
|
||||||
test_selectors=["tests/payments/test_client.py::test_timeout_retryable"],
|
test_selectors=["tests/payments/test_client.py::test_timeout_retryable"],
|
||||||
lint_selectors=["ruff src/payments/client.py"],
|
lint_selectors=["ruff src/payments/client.py"],
|
||||||
security_checks=["secret-scan scoped patch"],
|
security_checks=["secret-scan scoped patch"],
|
||||||
))
|
))
|
||||||
assert any("validation.json" in a.path for a in validation.artifacts)
|
assert any("validation.json" in a.path for a in validation.artifacts)
|
||||||
assert validation.checks["no_secret_literals"] == "pass"
|
assert {c.name: c.status for c in validation.checks}["no_secret_literals"] == "pass"
|
||||||
|
|
||||||
delivery = await agent.prepare_delivery(context, PrepareDeliveryInput(
|
delivery = await agent.prepare_delivery(context, PrepareDeliveryInput(
|
||||||
case_id="CASE-123",
|
case_id="CASE-123",
|
||||||
|
|||||||
Reference in New Issue
Block a user