mirror of
https://github.com/calesthio/OpenMontage.git
synced 2026-08-25 09:34:21 +08:00
fix(ci): stabilize character HyperFrames contract test
This commit is contained in:
@@ -10,6 +10,7 @@ sys.path.insert(0, str(PROJECT_ROOT))
|
||||
|
||||
from lib.pipeline_loader import get_required_tools, get_stage_order, load_pipeline
|
||||
from schemas.artifacts import ARTIFACT_NAMES, validate_artifact
|
||||
from tools.base_tool import ToolResult
|
||||
from tools.character.character_animation import (
|
||||
ActionTimelineCompiler,
|
||||
CharacterAnimationReviewer,
|
||||
@@ -235,12 +236,7 @@ def test_character_style_is_normalized_for_schema(tmp_path):
|
||||
}
|
||||
|
||||
|
||||
def test_character_renderer_can_handoff_to_video_compose(tmp_path):
|
||||
hyperframes = HyperFramesCompose()
|
||||
runtime = hyperframes._runtime_check()
|
||||
if not runtime["runtime_available"]:
|
||||
pytest.skip("HyperFrames runtime is required for character render handoff")
|
||||
|
||||
def test_character_renderer_can_handoff_to_video_compose(tmp_path, monkeypatch):
|
||||
character_design = CharacterSpecGenerator().execute(
|
||||
{"characters": [{"id": "mouse_lead", "role": "lead", "body_type": "mouse with tail"}]}
|
||||
).data["character_design"]
|
||||
@@ -286,6 +282,21 @@ def test_character_renderer_can_handoff_to_video_compose(tmp_path):
|
||||
assert Path(render_result.data["composition_path"]).exists()
|
||||
|
||||
output_path = tmp_path / "renders" / "final.mp4"
|
||||
captured_handoff = {}
|
||||
|
||||
def fake_hyperframes_execute(self, inputs):
|
||||
captured_handoff.update(inputs)
|
||||
Path(inputs["output_path"]).write_bytes(b"fake mp4")
|
||||
return ToolResult(success=True, data={"output": inputs["output_path"]})
|
||||
|
||||
monkeypatch.setattr(VideoCompose, "_hyperframes_available", lambda self: True)
|
||||
monkeypatch.setattr(
|
||||
VideoCompose,
|
||||
"_run_final_review",
|
||||
lambda self, *args, **kwargs: {"status": "pass", "issues_found": []},
|
||||
)
|
||||
monkeypatch.setattr(HyperFramesCompose, "execute", fake_hyperframes_execute)
|
||||
|
||||
compose_result = VideoCompose().execute(
|
||||
{
|
||||
"operation": "render",
|
||||
@@ -301,3 +312,8 @@ def test_character_renderer_can_handoff_to_video_compose(tmp_path):
|
||||
|
||||
assert compose_result.success, compose_result.error
|
||||
assert output_path.exists()
|
||||
assert captured_handoff["operation"] == "render"
|
||||
assert captured_handoff["workspace_path"] == render_result.data["hyperframes_workspace"]
|
||||
assert captured_handoff["output_path"] == str(output_path)
|
||||
assert captured_handoff["edit_decisions"]["render_runtime"] == "hyperframes"
|
||||
assert captured_handoff["skip_contrast"] is True
|
||||
|
||||
Reference in New Issue
Block a user