commit 71ea28a4020d6c17bba5e617e9bda0bd304896c7
parent c3c76758ae2da52ba530c9b7f5c0f507654161c8
Author: triesap <tyson@radroots.org>
Date: Wed, 8 Apr 2026 20:10:58 +0000
tests: add process-level stdio contract lane
Diffstat:
2 files changed, 91 insertions(+), 1 deletion(-)
diff --git a/pixi.toml b/pixi.toml
@@ -17,4 +17,6 @@ mojson = { path = "../../../../vendor/mojo/mojson" }
[tasks]
run = "mojo run src/main.mojo"
-test = "mojo -I src tests/test_hyf.mojo"
+test-unit = "mojo -I src tests/test_hyf.mojo"
+test-stdio = "mojo -I src tests/test_stdio_contract.mojo"
+test = { depends-on = ["test-unit", "test-stdio"] }
diff --git a/tests/test_stdio_contract.mojo b/tests/test_stdio_contract.mojo
@@ -0,0 +1,88 @@
+from std.subprocess import run
+from std.testing import assert_equal, assert_true, TestSuite
+
+from mojson import Value, loads
+
+
+def _run_hyf(request_json: String) raises -> Value:
+ var command = (
+ "printf '%s\\n' '"
+ + request_json
+ + "' | mojo run src/main.mojo"
+ )
+ var output = run(command)
+ if output == "":
+ raise Error("hyf process returned no stdout payload")
+ return loads(output)
+
+
+def test_status_success() raises:
+ var response = _run_hyf(
+ '{"version":1,"request_id":"status-proc-1","trace_id":"trace-status-proc-1","capability":"sys.status","input":{}}'
+ )
+
+ assert_equal(Int(response["version"].int_value()), 1)
+ assert_equal(response["request_id"].string_value(), "status-proc-1")
+ assert_equal(response["trace_id"].string_value(), "trace-status-proc-1")
+ assert_true(response["ok"].bool_value())
+ assert_equal(
+ response["output"]["build_identity"]["service_name"].string_value(),
+ "hyf",
+ )
+ assert_equal(
+ response["output"]["execution_mode_request_behavior"]["assisted"].string_value(),
+ "backend_unavailable",
+ )
+
+
+def test_invalid_envelope_preserves_correlation() raises:
+ var response = _run_hyf(
+ '{"version":2,"request_id":"bad-envelope-proc-1","trace_id":"trace-bad-envelope-proc-1","capability":"sys.status","input":{}}'
+ )
+
+ assert_equal(Int(response["version"].int_value()), 1)
+ assert_equal(response["request_id"].string_value(), "bad-envelope-proc-1")
+ assert_equal(
+ response["trace_id"].string_value(), "trace-bad-envelope-proc-1"
+ )
+ assert_true(not response["ok"].bool_value())
+ assert_equal(response["error"]["code"].string_value(), "invalid_request")
+
+
+def test_assisted_request_fails_explicitly() raises:
+ var response = _run_hyf(
+ '{"version":1,"request_id":"assisted-proc-1","capability":"query_rewrite","context":{"execution_mode_preference":"assisted"},"input":{"text":"eggs near me"}}'
+ )
+
+ assert_true(not response["ok"].bool_value())
+ assert_equal(response["error"]["code"].string_value(), "backend_unavailable")
+
+
+def test_strict_query_rewrite_failure() raises:
+ var response = _run_hyf(
+ '{"version":1,"request_id":"rewrite-bad-proc-1","capability":"query_rewrite","input":{"text":"eggs near me","tone":"brief"}}'
+ )
+
+ assert_true(not response["ok"].bool_value())
+ assert_equal(response["error"]["code"].string_value(), "invalid_request")
+ assert_true(
+ response["error"]["message"].string_value().find("unexpected field")
+ >= 0
+ )
+
+
+def test_strict_semantic_rank_failure() raises:
+ var response = _run_hyf(
+ '{"version":1,"request_id":"rank-bad-proc-1","capability":"semantic_rank","input":{"query":"eggs near me","candidates":[{"id":"lst_7ak2","title":"Pasture eggs","farm":"La Huerta del Sur","delivery":"pickup","distance_km":3.2,"freshness_minutes":2,"rating":5}]}}'
+ )
+
+ assert_true(not response["ok"].bool_value())
+ assert_equal(response["error"]["code"].string_value(), "invalid_request")
+ assert_true(
+ response["error"]["message"].string_value().find("unexpected field")
+ >= 0
+ )
+
+
+def main() raises:
+ TestSuite.discover_tests[__functions_in_module()]().run()