Files
reaper-control/tests/test_render_cli.py
renato97 48bc271afc feat: SDD workflow — test sync, song generation + validation, ReaScript hybrid pipeline
- compose-test-sync: fix 3 failing tests (NOTE_TO_MIDI, DrumLoopAnalyzer mock, section name)
- generate-song: CLI wrapper + RPP validator (6 structural checks) + 4 e2e tests
- reascript-hybrid: ReaScriptGenerator + command protocol + CLI + 16 unit tests
- 110/110 tests passing
- Full SDD cycle (propose→spec→design→tasks→apply→verify) for all 3 changes
2026-05-03 22:00:26 -03:00

69 lines
2.4 KiB
Python

"""Tests for scripts/compose.py — render CLI flag backward compat.
The drumloop-first compose.py does not include --render. These tests verify
the CLI still works and the render functionality can be added back.
"""
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parents[1]))
import pytest
import argparse
class TestRenderFlag:
"""Test --render flag behavior (kept as documentation of expected behavior)."""
def test_render_flag_defaults_to_false(self):
parser = argparse.ArgumentParser()
parser.add_argument("--render", action="store_true")
parser.add_argument("--render-output", default=None)
args = parser.parse_args([])
assert args.render is False
def test_render_flag_true_when_provided(self):
parser = argparse.ArgumentParser()
parser.add_argument("--render", action="store_true")
parser.add_argument("--render-output", default=None)
args = parser.parse_args(["--render"])
assert args.render is True
def test_render_output_defaults_to_none(self):
parser = argparse.ArgumentParser()
parser.add_argument("--render", action="store_true")
parser.add_argument("--render-output", default=None)
args = parser.parse_args([])
assert args.render_output is None
class TestComposeNoRender:
"""Verify the drumloop-first compose.py main() produces output without --render."""
def test_main_without_render_produces_rpp(self, tmp_path):
from unittest.mock import patch, MagicMock
output = tmp_path / "track.rpp"
with patch("scripts.compose.SampleSelector") as mock_cls:
mock_sel = MagicMock()
mock_sel._samples = [
{"role": "drumloop", "perceptual": {"tempo": 95.0}, "musical": {"key": "Am"},
"character": "dark", "original_path": "f.wav", "original_name": "f.wav",
"file_hash": "x"},
]
mock_sel.select.return_value = [MagicMock(sample={"original_path": "c.wav"})]
mock_sel.select_diverse.return_value = [{"original_path": "v.wav", "file_hash": "v"}]
mock_cls.return_value = mock_sel
from scripts.compose import main
orig = sys.argv
try:
sys.argv = ["compose", "--output", str(output)]
main()
finally:
sys.argv = orig
assert output.exists()