Spaces:
Runtime error
Runtime error
Jeongsoo1975
Initial commit: Gradio text-based speaker separation app for Hugging Face Spaces
ae9ec05
| #!/usr/bin/env python3 | |
| """ | |
| Gradio 앱 기본 기능 테스트 스크립트 | |
| """ | |
| import os | |
| import sys | |
| import logging | |
| # 로깅 설정 | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| def test_imports(): | |
| """필수 모듈 import 테스트""" | |
| try: | |
| import gradio as gr | |
| logger.info(f"✓ Gradio 버전: {gr.__version__}") | |
| import torch | |
| logger.info(f"✓ PyTorch 버전: {torch.__version__}") | |
| import whisper | |
| logger.info("✓ OpenAI Whisper 가져오기 성공") | |
| import google.generativeai as genai | |
| logger.info("✓ Google Generative AI 가져오기 성공") | |
| from stt_processor import STTProcessor | |
| logger.info("✓ STTProcessor 모듈 가져오기 성공") | |
| return True | |
| except ImportError as e: | |
| logger.error(f"❌ 모듈 import 실패: {e}") | |
| return False | |
| def test_stt_processor_init(): | |
| """STTProcessor 초기화 테스트 (API 키 없이)""" | |
| try: | |
| from stt_processor import STTProcessor | |
| # API 키 없이 초기화 시도 (예상되는 오류) | |
| try: | |
| processor = STTProcessor() | |
| logger.error("❌ API 키 없이 초기화 성공 (예상되지 않음)") | |
| return False | |
| except ValueError as e: | |
| logger.info(f"✓ API 키 검증 로직 정상 작동: {e}") | |
| return True | |
| except Exception as e: | |
| logger.error(f"❌ STTProcessor 테스트 실패: {e}") | |
| return False | |
| def test_gradio_interface(): | |
| """Gradio 인터페이스 생성 테스트""" | |
| try: | |
| from app import create_interface | |
| # 인터페이스 생성 테스트 | |
| interface = create_interface() | |
| logger.info("✓ Gradio 인터페이스 생성 성공") | |
| # 인터페이스 구성 요소 확인 | |
| if hasattr(interface, 'blocks'): | |
| logger.info("✓ Gradio Blocks 구조 확인") | |
| return True | |
| except Exception as e: | |
| logger.error(f"❌ Gradio 인터페이스 테스트 실패: {e}") | |
| return False | |
| def test_file_structure(): | |
| """필수 파일 구조 확인""" | |
| required_files = [ | |
| 'app.py', | |
| 'stt_processor.py', | |
| 'requirements.txt', | |
| 'README.md', | |
| 'deployment_guide.md' | |
| ] | |
| missing_files = [] | |
| for file in required_files: | |
| if not os.path.exists(file): | |
| missing_files.append(file) | |
| if missing_files: | |
| logger.error(f"❌ 누락된 파일: {missing_files}") | |
| return False | |
| else: | |
| logger.info("✓ 모든 필수 파일 존재 확인") | |
| return True | |
| def main(): | |
| """테스트 실행""" | |
| logger.info("🧪 Gradio STT 앱 테스트 시작") | |
| logger.info("=" * 50) | |
| tests = [ | |
| ("필수 모듈 import", test_imports), | |
| ("파일 구조 확인", test_file_structure), | |
| ("STTProcessor 초기화", test_stt_processor_init), | |
| ("Gradio 인터페이스", test_gradio_interface) | |
| ] | |
| passed = 0 | |
| total = len(tests) | |
| for test_name, test_func in tests: | |
| logger.info(f"\n🔍 {test_name} 테스트...") | |
| try: | |
| if test_func(): | |
| passed += 1 | |
| logger.info(f"✅ {test_name} 통과") | |
| else: | |
| logger.error(f"❌ {test_name} 실패") | |
| except Exception as e: | |
| logger.error(f"❌ {test_name} 오류: {e}") | |
| logger.info("\n" + "=" * 50) | |
| logger.info(f"📊 테스트 결과: {passed}/{total} 통과") | |
| if passed == total: | |
| logger.info("🎉 모든 테스트 통과! 앱이 배포 준비되었습니다.") | |
| return True | |
| else: | |
| logger.warning("⚠️ 일부 테스트가 실패했습니다. 문제를 확인해주세요.") | |
| return False | |
| if __name__ == "__main__": | |
| success = main() | |
| sys.exit(0 if success else 1) |