Download backend/scripts/test_quick_verify.py from calebhan/rescored: direct link, hf CLI and curl.
- Browser
- Download file 4.9 kB
-
https://huggingface.co/spaces/calebhan/rescored/resolve/main/backend/scripts/test_quick_verify.py
- Command line
-
hf download hf://spaces/calebhan/rescored/backend/scripts/test_quick_verify.py
-
curl -L -o test_quick_verify.py https://huggingface.co/spaces/calebhan/rescored/resolve/main/backend/scripts/test_quick_verify.py
4.9 kB
| #!/usr/bin/env python3 | |
| """ | |
| Quick verification test - only runs the 6 videos that had code bugs (now fixed). | |
| This is faster than the full suite and verifies our bug fixes work. | |
| """ | |
| import sys | |
| from pathlib import Path | |
| sys.path.insert(0, str(Path(__file__).parent.parent)) | |
| from test_accuracy import run_accuracy_test | |
| import json | |
| from datetime import datetime | |
| # Only test the 6 videos that had code bugs (should all pass now) | |
| QUICK_TEST_VIDEOS = [ | |
| { | |
| "id": "chopin_nocturne", | |
| "url": "https://www.youtube.com/watch?v=9E6b3swbnWg", | |
| "description": "Chopin - Nocturne Op. 9 No. 2", | |
| "difficulty": "hard", | |
| "expected_accuracy": "50-60%", | |
| "notes": "2048th note duration (Bug #2b)", | |
| "bug": "2048th note duration (Bug #2b)" | |
| }, | |
| { | |
| "id": "canon_in_d", | |
| "url": "https://www.youtube.com/watch?v=NlprozGcs80", | |
| "description": "Pachelbel - Canon in D", | |
| "difficulty": "medium", | |
| "expected_accuracy": "60-70%", | |
| "notes": "NoneType velocity (Bug #2a)", | |
| "bug": "NoneType velocity (Bug #2a)" | |
| }, | |
| { | |
| "id": "river_flows", | |
| "url": "https://www.youtube.com/watch?v=7maJOI3QMu0", | |
| "description": "Yiruma - River Flows in You", | |
| "difficulty": "medium", | |
| "expected_accuracy": "60-70%", | |
| "notes": "NoneType velocity (Bug #2a)", | |
| "bug": "NoneType velocity (Bug #2a)" | |
| }, | |
| { | |
| "id": "moonlight_sonata", | |
| "url": "https://www.youtube.com/watch?v=4Tr0otuiQuU", | |
| "description": "Beethoven - Moonlight Sonata", | |
| "difficulty": "medium", | |
| "expected_accuracy": "60-70%", | |
| "notes": "NoneType velocity (Bug #2a)", | |
| "bug": "NoneType velocity (Bug #2a)" | |
| }, | |
| { | |
| "id": "claire_de_lune", | |
| "url": "https://www.youtube.com/watch?v=WNcsUNKlAKw", | |
| "description": "Debussy - Clair de Lune", | |
| "difficulty": "hard", | |
| "expected_accuracy": "50-60%", | |
| "notes": "2048th note duration (Bug #2b)", | |
| "bug": "2048th note duration (Bug #2b)" | |
| }, | |
| { | |
| "id": "la_campanella", | |
| "url": "https://www.youtube.com/watch?v=MD6xMyuZls0", | |
| "description": "Liszt - La Campanella", | |
| "difficulty": "very_hard", | |
| "expected_accuracy": "40-50%", | |
| "notes": "NoneType velocity (Bug #2a)", | |
| "bug": "NoneType velocity (Bug #2a)" | |
| } | |
| ] | |
| def main(): | |
| """Run quick verification tests.""" | |
| print("="*70) | |
| print("Quick Verification Test - Bug Fixes") | |
| print("="*70) | |
| print(f"Testing {len(QUICK_TEST_VIDEOS)} videos that previously failed") | |
| print("All should now succeed (verifies bug fixes)") | |
| print() | |
| results = [] | |
| for i, video in enumerate(QUICK_TEST_VIDEOS, 1): | |
| print(f"\n[{i}/{len(QUICK_TEST_VIDEOS)}] Testing: {video['id']}") | |
| print(f"Previous error: {video['bug']}") | |
| result = run_accuracy_test(video, verbose=True) | |
| results.append(result) | |
| # Summary | |
| print("\n" + "="*70) | |
| print("QUICK VERIFICATION SUMMARY") | |
| print("="*70) | |
| successful = [r for r in results if r["success"]] | |
| failed = [r for r in results if not r["success"]] | |
| print(f"\nTotal: {len(results)} | Success: {len(successful)} | Failed: {len(failed)}") | |
| print(f"Success Rate: {len(successful)/len(results)*100:.1f}%") | |
| if successful: | |
| print("\n✅ Bug Fixes Verified - Successful Transcriptions:") | |
| for r in successful: | |
| if "midi" in r["metrics"] and "musicxml" in r["metrics"]: | |
| notes = r["metrics"]["midi"]["total_notes"] | |
| measures = r["metrics"]["musicxml"]["total_measures"] | |
| print(f" - {r['video_id']:20s} | {notes:4d} notes | {measures:3d} measures") | |
| if failed: | |
| print("\n❌ Still Failing:") | |
| for r in failed: | |
| error_preview = r["error"][:80] if r["error"] else "Unknown" | |
| print(f" - {r['video_id']:20s} | {error_preview}") | |
| # Save results | |
| from app_config import settings | |
| output_path = Path(settings.storage_path) / "quick_verify_results.json" | |
| output_path.parent.mkdir(parents=True, exist_ok=True) | |
| with open(output_path, 'w') as f: | |
| json.dump({ | |
| "test_date": datetime.utcnow().isoformat(), | |
| "test_type": "bug_fix_verification", | |
| "total_tests": len(results), | |
| "successful": len(successful), | |
| "failed": len(failed), | |
| "success_rate": len(successful) / len(results), | |
| "results": results | |
| }, f, indent=2) | |
| print(f"\n📊 Results saved to: {output_path}") | |
| if len(successful) == len(results): | |
| print("\n🎉 ALL BUG FIXES VERIFIED! Ready for full test suite.") | |
| return 0 | |
| else: | |
| print(f"\n⚠️ {len(failed)} test(s) still failing - investigate before full suite") | |
| return 1 | |
| if __name__ == "__main__": | |
| sys.exit(main()) | |