Files
cleveragents-core/robot/helper_project_context_policy.py
T

109 lines
3.0 KiB
Python

"""Helper utilities for ProjectContextPolicy Robot tests."""
from __future__ import annotations
import json
import sys
from cleveragents.domain.models.core.context_policy import (
ContextView,
ProjectContextPolicy,
)
def _serialize_test() -> None:
"""Serialize a policy and validate structure."""
policy = ProjectContextPolicy(
default_view=ContextView(
include_resources=["db-*"],
exclude_resources=["db-test"],
include_paths=["src/**/*.py"],
exclude_paths=["*.pyc"],
max_file_size=1048576,
max_total_size=10485760,
),
strategize_view=ContextView(
include_resources=["db-*", "cache-*"],
),
)
data = json.loads(policy.model_dump_json())
# Validate top-level keys
assert "default_view" in data, "missing default_view"
assert "strategize_view" in data, "missing strategize_view"
assert "execute_view" in data, "missing execute_view"
assert "apply_view" in data, "missing apply_view"
# Validate default_view structure
dv = data["default_view"]
assert dv["include_resources"] == ["db-*"]
assert dv["exclude_resources"] == ["db-test"]
assert dv["include_paths"] == ["src/**/*.py"]
assert dv["exclude_paths"] == ["*.pyc"]
assert dv["max_file_size"] == 1048576
assert dv["max_total_size"] == 10485760
# Validate strategize_view
sv = data["strategize_view"]
assert sv["include_resources"] == ["db-*", "cache-*"]
# Validate None views are null
assert data["execute_view"] is None
assert data["apply_view"] is None
print("context-policy-serialize-ok")
def _resolve_test() -> None:
"""Test resolve_view inheritance."""
policy = ProjectContextPolicy(
default_view=ContextView(
include_resources=["default-*"],
),
strategize_view=ContextView(
include_resources=["strategize-*"],
),
)
# execute should inherit from strategize
view = policy.resolve_view("execute")
assert view.include_resources == ["strategize-*"]
# default should return default
view = policy.resolve_view("default")
assert view.include_resources == ["default-*"]
print("context-policy-resolve-ok")
def _empty_test() -> None:
"""Test empty policy defaults."""
policy = ProjectContextPolicy()
view = policy.resolve_view("apply")
assert view.include_resources == []
assert view.exclude_resources == []
assert view.include_paths == []
assert view.exclude_paths == []
assert view.max_file_size is None
assert view.max_total_size is None
print("context-policy-empty-ok")
def main() -> None:
if len(sys.argv) < 2:
raise SystemExit("Expected command argument")
command = sys.argv[1]
if command == "serialize":
_serialize_test()
elif command == "resolve":
_resolve_test()
elif command == "empty":
_empty_test()
else:
raise SystemExit(f"Unknown helper command: {command}")
if __name__ == "__main__":
main()