kokorotts-server/test_updated_app.py

95 lines
3.0 KiB
Python

import os
import tempfile
import subprocess
import json
from flask import Flask
from werkzeug.utils import secure_filename
# Test that our updated kokoro TTS wrapper works correctly
def test_speaker_parsing():
"""Test that speaker text parsing works correctly"""
with open("test.txt", "r") as f:
text = f.read()
from app import parse_speaker_text
# Issue #4: parse_speaker_text returns (speakers, tracks) tuple
speakers, tracks = parse_speaker_text(text)
# Should have 2 speakers
assert len(speakers) == 2, f"Expected 2 speakers, got {len(speakers)}"
# Check that Alex and Jamie are present
assert "Alex" in speakers, "Alex should be a speaker"
assert "Jamie" in speakers, "Jamie should be a speaker"
# Check that both have content
assert speakers["Alex"], "Alex should have content"
assert speakers["Jamie"], "Jamie should have content"
print("OK: Speaker parsing test passed")
def test_voice_assignment():
"""Test that voice assignment works correctly"""
from app import parse_speaker_text, assign_voices_to_speakers
with open("test.txt", "r") as f:
text = f.read()
# Issue #14: Unpack tuple properly - parse_speaker_text returns (speakers, tracks)
speakers, tracks = parse_speaker_text(text)
speaker_voice_map = assign_voices_to_speakers(speakers)
# Should have assignments for both speakers
assert len(speaker_voice_map) == 2, (
f"Expected 2 voice assignments, got {len(speaker_voice_map)}"
)
# Both should have assigned voices
for speaker, voice in speaker_voice_map.items():
assert voice in ["bm_fable", "bm_lewis", "bm_george"], (
f"Invalid voice {voice} for {speaker}"
)
print("OK: Voice assignment test passed")
def test_full_integration():
"""Test that the full integration works with a simple example"""
from app import generate_wav_files, parse_speaker_text, assign_voices_to_speakers
test_text = """Alex: Hello world
Jamie: This is a test"""
# Issue #4/#14: Unpack tuple properly
speakers, tracks = parse_speaker_text(test_text)
speaker_voice_map = assign_voices_to_speakers(speakers)
with tempfile.TemporaryDirectory() as tmpdir:
original_output_dir = os.environ.get("OUTPUT_DIR", "output")
os.environ["OUTPUT_DIR"] = tmpdir
try:
# Issue #5: Pass all 4 required args (speakers, speaker_voice_map, title, tracks)
wav_files = generate_wav_files(
speakers, speaker_voice_map, "test_integration", tracks
)
if wav_files:
print("OK: Integration test passed - WAV files generated")
else:
print("WARN: Integration test - No files generated (but no error)")
finally:
os.environ["OUTPUT_DIR"] = original_output_dir
print("OK: Full integration test completed")
if __name__ == "__main__":
test_speaker_parsing()
test_voice_assignment()
test_full_integration()
print("\nAll tests passed!")