| """ |
| Test configuration — mocks openenv so tests run without the full framework installed. |
| """ |
|
|
| import sys |
| import types |
| import unittest.mock as mock |
|
|
| from pydantic import BaseModel |
| from typing import Any, Dict, Optional |
|
|
|
|
| |
| _openenv = types.ModuleType("openenv") |
| _core = types.ModuleType("openenv.core") |
| _env_server = types.ModuleType("openenv.core.env_server") |
| _interfaces = types.ModuleType("openenv.core.env_server.interfaces") |
| _types_mod = types.ModuleType("openenv.core.env_server.types") |
| _http = types.ModuleType("openenv.core.env_server.http_server") |
| _client_types = types.ModuleType("openenv.core.client_types") |
|
|
| _openenv.core = _core |
| _core.env_server = _env_server |
| _core.EnvClient = mock.MagicMock() |
| _core.client_types = _client_types |
| _env_server.interfaces = _interfaces |
| _env_server.types = _types_mod |
| _env_server.http_server = _http |
|
|
|
|
| class _MockAction(BaseModel): |
| pass |
|
|
|
|
| class _MockObservation(BaseModel): |
| done: bool = False |
| reward: float = 0.0 |
| truncated: bool = False |
| metadata: Optional[Dict[str, Any]] = None |
|
|
|
|
| class _MockState(BaseModel): |
| episode_id: Optional[str] = None |
| step_count: int = 0 |
|
|
|
|
| _types_mod.Action = _MockAction |
| _types_mod.Observation = _MockObservation |
| _types_mod.State = _MockState |
| _interfaces.Environment = type("Environment", (), { |
| "__init__": lambda self: None, |
| "_reset_rubric": lambda self: None, |
| }) |
| _http.create_app = mock.MagicMock() |
| _client_types.StepResult = mock.MagicMock() |
|
|
| for name, mod in [ |
| ("openenv", _openenv), |
| ("openenv.core", _core), |
| ("openenv.core.env_server", _env_server), |
| ("openenv.core.env_server.interfaces", _interfaces), |
| ("openenv.core.env_server.types", _types_mod), |
| ("openenv.core.env_server.http_server", _http), |
| ("openenv.core.client_types", _client_types), |
| ]: |
| sys.modules[name] = mod |
|
|