type: narrow optional workflow run assertions

This commit is contained in:
lda
2026-08-29 18:41:29 +07:00 Verified
parent 3de29104ee
commit 76bba33a64
+43 -20
View File
@@ -68,8 +68,11 @@ def test_workflow_surface_runs_non_interrupting_deployment(tmp_path: Path) -> No
) )
assert payload["status"] == "completed" assert payload["status"] == "completed"
assert isinstance(payload["run_id"], str) run_id = payload["run_id"]
assert payload["output"]["echoed"] == "hello" assert isinstance(run_id, str)
output = payload["output"]
assert output is not None
assert output["echoed"] == "hello"
assert payload["diagnostics"] == [] assert payload["diagnostics"] == []
assert payload["trace_count"] == 1 assert payload["trace_count"] == 1
assert "trace" not in payload assert "trace" not in payload
@@ -77,10 +80,10 @@ def test_workflow_surface_runs_non_interrupting_deployment(tmp_path: Path) -> No
assert payload["next_actions"]["recommended_next_tool"] is None assert payload["next_actions"]["recommended_next_tool"] is None
assert "completed" in payload["next_actions"]["reason"] assert "completed" in payload["next_actions"]["reason"]
inspected = asyncio.run(h.inspect_run(run_id=payload["run_id"])) inspected = asyncio.run(h.inspect_run(run_id=run_id))
traced = asyncio.run( traced = asyncio.run(
h.read_run_trace( h.read_run_trace(
run_id=payload["run_id"], run_id=run_id,
trace_range=TraceRange(start=0, limit=1), trace_range=TraceRange(start=0, limit=1),
) )
) )
@@ -128,10 +131,14 @@ def test_workflow_surface_failed_deployment_exposes_error_on_run_and_inspect(
workflow_input={"message": "hello"}, workflow_input={"message": "hello"},
) )
) )
inspected = asyncio.run(h.inspect_run(run_id=payload["run_id"])) run_id = payload["run_id"]
assert isinstance(run_id, str)
inspected = asyncio.run(h.inspect_run(run_id=run_id))
assert payload["status"] == "failed" assert payload["status"] == "failed"
assert "upstream exploded" in payload["error"] error = payload["error"]
assert isinstance(error, str)
assert "upstream exploded" in error
assert payload["trace_count"] == 0 assert payload["trace_count"] == 0
assert payload["next_actions"]["recommended_next_tool"] is None assert payload["next_actions"]["recommended_next_tool"] is None
assert "before producing trace" in payload["next_actions"]["reason"] assert "before producing trace" in payload["next_actions"]["reason"]
@@ -174,16 +181,23 @@ def test_workflow_surface_run_deployment_can_include_trace_detail(
assert payload["status"] == "completed" assert payload["status"] == "completed"
assert payload["trace_count"] == 1 assert payload["trace_count"] == 1
assert payload["trace_start"] == 0 trace_start = payload.get("trace_start")
assert payload["trace_limit"] == 10 assert trace_start == 0
assert payload["trace_truncated"] is False trace_limit = payload.get("trace_limit")
assert len(payload["trace"]) == 1 assert trace_limit == 10
assert payload["trace"][0]["node_id"] == "echo" trace_truncated = payload.get("trace_truncated")
assert payload["trace"][0]["outcome"] == "ok" assert trace_truncated is False
trace = payload.get("trace")
assert trace is not None
assert len(trace) == 1
assert trace[0]["node_id"] == "echo"
assert trace[0]["outcome"] == "ok"
assert payload["next_actions"]["can_continue"] is False assert payload["next_actions"]["can_continue"] is False
assert payload["next_actions"]["patch_examples"] == [] assert payload["next_actions"]["patch_examples"] == []
validated = RunDeploymentResult.model_validate(payload).model_dump(mode="json") validated = RunDeploymentResult.model_validate(payload).model_dump(mode="json")
assert validated["trace"][0]["node_id"] == "echo" validated_trace = validated["trace"]
assert validated_trace is not None
assert validated_trace[0]["node_id"] == "echo"
assert validated["trace_start"] == 0 assert validated["trace_start"] == 0
assert validated["trace_limit"] == 10 assert validated["trace_limit"] == 10
assert validated["trace_truncated"] is False assert validated["trace_truncated"] is False
@@ -224,10 +238,13 @@ def test_workflow_surface_run_deployment_can_read_empty_trace_range(
) )
assert payload["trace_count"] == 1 assert payload["trace_count"] == 1
assert payload["trace_start"] == 5 trace_start = payload.get("trace_start")
assert payload["trace_limit"] == 10 assert trace_start == 5
assert payload["trace"] == [] trace_limit = payload.get("trace_limit")
assert payload["trace_truncated"] is False assert trace_limit == 10
trace = payload.get("trace")
assert trace == []
assert payload.get("trace_truncated") is False
def test_workflow_surface_runs_deployment_with_bound_node_spec_dependency( def test_workflow_surface_runs_deployment_with_bound_node_spec_dependency(
@@ -262,7 +279,9 @@ def test_workflow_surface_runs_deployment_with_bound_node_spec_dependency(
) )
assert payload["status"] == "completed" assert payload["status"] == "completed"
assert payload["output"]["echoed"] == "hello" output = payload["output"]
assert output is not None
assert output["echoed"] == "hello"
assert payload["diagnostics"] == [] assert payload["diagnostics"] == []
@@ -314,7 +333,9 @@ def test_workflow_surface_runs_artifact_created_from_concrete_node_ref(
assert artifact.plan["nodes"][0]["node"] == "demo.echo_tool" assert artifact.plan["nodes"][0]["node"] == "demo.echo_tool"
assert artifact.required_capability_map()["demo.echo_tool"].logical_source == "demo" assert artifact.required_capability_map()["demo.echo_tool"].logical_source == "demo"
assert payload["status"] == "completed" assert payload["status"] == "completed"
assert payload["output"]["echoed"] == "hello" output = payload["output"]
assert output is not None
assert output["echoed"] == "hello"
assert payload["diagnostics"] == [] assert payload["diagnostics"] == []
@@ -433,5 +454,7 @@ def test_workflow_surface_runs_deployment_with_bound_reducer_dependency(
) )
assert payload["status"] == "completed" assert payload["status"] == "completed"
assert payload["output"]["total"] == 6 output = payload["output"]
assert output is not None
assert output["total"] == 6
assert payload["diagnostics"] == [] assert payload["diagnostics"] == []