2025-01-01 17:38:22 -07:00
|
|
|
import os
|
|
|
|
import shutil
|
2024-12-30 13:25:30 -07:00
|
|
|
import sys
|
2024-12-31 02:55:51 -07:00
|
|
|
from unittest.mock import Mock, patch
|
|
|
|
|
|
|
|
import pytest
|
2024-12-30 13:25:30 -07:00
|
|
|
|
2025-01-01 17:38:22 -07:00
|
|
|
def cleanup_mock_dirs():
|
|
|
|
"""Clean up any MagicMock directories created during tests"""
|
|
|
|
mock_dir = "MagicMock"
|
|
|
|
if os.path.exists(mock_dir):
|
|
|
|
shutil.rmtree(mock_dir)
|
|
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
|
|
def cleanup():
|
|
|
|
"""Automatically clean up before and after each test"""
|
|
|
|
cleanup_mock_dirs()
|
|
|
|
yield
|
|
|
|
cleanup_mock_dirs()
|
|
|
|
|
2024-12-30 13:25:30 -07:00
|
|
|
# Mock torch and other ML modules before they're imported
|
2024-12-31 01:57:00 -07:00
|
|
|
sys.modules["torch"] = Mock()
|
|
|
|
sys.modules["transformers"] = Mock()
|
|
|
|
sys.modules["phonemizer"] = Mock()
|
|
|
|
sys.modules["models"] = Mock()
|
|
|
|
sys.modules["models.build_model"] = Mock()
|
|
|
|
sys.modules["kokoro"] = Mock()
|
|
|
|
sys.modules["kokoro.generate"] = Mock()
|
|
|
|
sys.modules["kokoro.phonemize"] = Mock()
|
|
|
|
sys.modules["kokoro.tokenize"] = Mock()
|
2024-12-30 13:25:30 -07:00
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
|
|
def mock_tts_model():
|
|
|
|
"""Mock TTSModel to avoid loading real models during tests"""
|
|
|
|
with patch("api.src.services.tts.TTSModel") as mock:
|
|
|
|
model_instance = Mock()
|
|
|
|
model_instance.get_instance.return_value = model_instance
|
|
|
|
model_instance.get_voicepack.return_value = None
|
|
|
|
mock.get_instance.return_value = model_instance
|
|
|
|
yield model_instance
|