BarunAction-35M / source /space /tests /test_app.py
harrrshall's picture
Release BarunAction-35M candidate-v2
5a46e5d verified
Raw
History Blame Contribute Delete
4.81 kB
from __future__ import annotations
import hashlib
import importlib.util
import json
import tempfile
import unittest
from pathlib import Path
from types import SimpleNamespace
from unittest.mock import patch
APP_PATH = Path(__file__).resolve().parents[1] / "app.py"
SPEC = importlib.util.spec_from_file_location("barunaction_space_app", APP_PATH)
assert SPEC is not None and SPEC.loader is not None
app = importlib.util.module_from_spec(SPEC)
SPEC.loader.exec_module(app)
class _Record:
def __init__(self, payload: dict[str, object]) -> None:
self.payload = payload
def to_dict(self) -> dict[str, object]:
return self.payload
class _Compiler:
def infer(self, **_: object) -> SimpleNamespace:
action = {
"calls": [{"args": {"query": "Cubbon Park"}, "tool": "show_map"}],
"decision": "CALL",
"mode": "SINGLE",
}
policy = {
"authorization_required": True,
"confirmation_required": False,
"execution_permitted": False,
"proposed_call_count": 1,
"reason_codes": ["external_authorization_required", "model_output_is_proposal_only"],
"side_effecting_tools": [],
}
return SimpleNamespace(
action=_Record(action),
candidate_id="candidate-v2",
checkpoint_format="float",
error=None,
generated_tokens=31,
ok=True,
policy=_Record(policy),
prompt_sha256="a" * 64,
prompt_tokens=121,
raw_output=json.dumps(action, separators=(",", ":")),
)
class PublicSpaceTests(unittest.TestCase):
def test_success_is_a_validated_nonexecuting_proposal(self) -> None:
with patch.object(app, "_get_compiler", return_value=_Compiler()):
status, action, safety, raw, provenance = app.compile_action(
"Show me Cubbon Park",
app.DEFAULT_TOOLS_JSON,
"{}",
app.DEFAULT_NOW,
)
self.assertIn("Validated Action IR proposal", status)
self.assertIn("Nothing was executed", status)
self.assertEqual(action["calls"][0]["tool"], "show_map")
self.assertFalse(safety["execution_permitted"])
self.assertFalse(safety["external_side_effects"])
self.assertFalse(safety["space_executes_tools"])
self.assertIn('"show_map"', raw)
self.assertTrue(provenance["checkpoint_verified"])
self.assertEqual(provenance["revision"], "candidate-v2")
def test_invalid_json_fails_before_model_load(self) -> None:
with patch.object(app, "_get_compiler") as loader:
status, action, safety, raw, provenance = app.compile_action(
"Turn on the flashlight",
'[{"name":"one","name":"two"}]',
"{}",
app.DEFAULT_NOW,
)
loader.assert_not_called()
self.assertIn("invalid_json", status)
self.assertIsNone(action)
self.assertFalse(safety["execution_permitted"])
self.assertEqual(raw, "")
self.assertFalse(provenance["checkpoint_verified"])
def test_load_failure_does_not_expose_exception_text(self) -> None:
with patch.object(
app,
"_get_compiler",
side_effect=RuntimeError("private-token-value"),
):
result = app.compile_action(
"Open Wi-Fi settings",
app.DEFAULT_TOOLS_JSON,
"{}",
app.DEFAULT_NOW,
)
combined = json.dumps(result)
self.assertIn("model_unavailable", combined)
self.assertNotIn("private-token-value", combined)
self.assertFalse(result[2]["execution_permitted"])
def test_checkpoint_verifier_is_fail_closed(self) -> None:
with tempfile.TemporaryDirectory() as temporary:
root = Path(temporary)
model_file = root / "model.safetensors"
manifest_file = root / "checkpoint_manifest.json"
model_file.write_bytes(b"model")
manifest_file.write_bytes(b"manifest")
expected = hashlib.sha256(b"model").hexdigest()
manifest_expected = hashlib.sha256(b"manifest").hexdigest()
with (
patch.object(app, "EXPECTED_CHECKPOINT_SHA256", {"model.safetensors": expected}),
patch.object(app, "CHECKPOINT_MANIFEST_SHA256", manifest_expected),
):
app._verify_checkpoint_files(root)
model_file.write_bytes(b"tampered")
with self.assertRaisesRegex(RuntimeError, "digest mismatch"):
app._verify_checkpoint_files(root)
if __name__ == "__main__":
unittest.main()