richard-su's picture
Upload folder using huggingface_hub
76f9cd2 verified
raw
history blame
2.68 kB
"""
Test configuration and shared fixtures
"""
import pytest
import asyncio
import tempfile
import shutil
import os
from pathlib import Path
from typing import Generator, Dict, Any
from src.services.audio_processing_service import AudioProcessingService
from src.services.podcast_download_service import PodcastDownloadService
from src.services.file_management_service import FileManagementService
from src.services.speaker_embedding_service import SpeakerEmbeddingService
@pytest.fixture(scope="session")
def event_loop():
"""Create an instance of the default event loop for the test session."""
loop = asyncio.get_event_loop_policy().new_event_loop()
yield loop
loop.close()
@pytest.fixture
def temp_dir() -> Generator[str, None, None]:
"""Create a temporary directory for tests"""
temp_path = tempfile.mkdtemp(prefix="podcast_test_")
yield temp_path
shutil.rmtree(temp_path, ignore_errors=True)
@pytest.fixture
def sample_mp3_files(temp_dir: str) -> Dict[str, str]:
"""Create sample MP3 files for testing"""
import ffmpeg
files = {}
for i, name in enumerate(["test1.mp3", "test2.mp3"]):
file_path = os.path.join(temp_dir, name)
# Create a short silence audio file for testing
(
ffmpeg
.input('anullsrc=channel_layout=mono:sample_rate=16000', f='lavfi', t=5)
.output(file_path, acodec='mp3')
.overwrite_output()
.run(quiet=True)
)
files[name] = file_path
return files
@pytest.fixture
def podcast_download_service() -> PodcastDownloadService:
"""Create podcast download service instance"""
return PodcastDownloadService()
@pytest.fixture
def file_management_service() -> FileManagementService:
"""Create file management service instance"""
return FileManagementService()
@pytest.fixture
def apple_podcast_url() -> str:
"""Sample Apple Podcast URL for testing"""
return "https://podcasts.apple.com/us/podcast/the-tim-ferriss-show/id863897795?i=1000640901376"
@pytest.fixture
def xiaoyuzhou_podcast_url() -> str:
"""Sample XiaoYuZhou Podcast URL for testing"""
return "https://www.xiaoyuzhoufm.com/episode/654321"
@pytest.fixture
def test_config() -> Dict[str, Any]:
"""Test configuration"""
return {
"audio_processing": {
"min_segment_length": 10.0,
"min_silence_length": 0.5,
"max_concurrent_segments": 2
},
"download": {
"timeout": 30,
"max_retries": 2
},
"transcription": {
"model_name": "base",
"language": "auto"
}
}