fix tests
This commit is contained in:
104
fix_tests.py
Normal file
104
fix_tests.py
Normal file
@@ -0,0 +1,104 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Script to batch fix common test issues after API changes."""
|
||||
|
||||
import re
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def fix_add_to_queue_calls(content: str) -> str:
|
||||
"""Add serie_folder parameter to add_to_queue calls."""
|
||||
# Pattern: add_to_queue(\n serie_id="...",
|
||||
# Add: serie_folder="...",
|
||||
pattern = r'(add_to_queue\(\s+serie_id="([^"]+)",)'
|
||||
|
||||
def replace_func(match):
|
||||
serie_id = match.group(2)
|
||||
# Extract just the series name without number if present
|
||||
serie_folder = serie_id.split('-')[0] if '-' in serie_id else serie_id
|
||||
return f'{match.group(1)}\n serie_folder="{serie_folder}",'
|
||||
|
||||
return re.sub(pattern, replace_func, content)
|
||||
|
||||
|
||||
def fix_queue_status_response(content: str) -> str:
|
||||
"""Fix queue status response structure - remove nested 'status' key."""
|
||||
# Replace data["status"]["pending"] with data["pending_queue"]
|
||||
content = re.sub(r'data\["status"\]\["pending"\]', 'data["pending_queue"]', content)
|
||||
content = re.sub(r'data\["status"\]\["active"\]', 'data["active_downloads"]', content)
|
||||
content = re.sub(r'data\["status"\]\["completed"\]', 'data["completed_downloads"]', content)
|
||||
content = re.sub(r'data\["status"\]\["failed"\]', 'data["failed_downloads"]', content)
|
||||
content = re.sub(r'data\["status"\]\["is_running"\]', 'data["is_running"]', content)
|
||||
content = re.sub(r'data\["status"\]\["is_paused"\]', 'data["is_paused"]', content)
|
||||
|
||||
# Also fix response.json()["status"]["..."]
|
||||
content = re.sub(r'response\.json\(\)\["status"\]\["pending"\]', 'response.json()["pending_queue"]', content)
|
||||
content = re.sub(r'response\.json\(\)\["status"\]\["is_running"\]', 'response.json()["is_running"]', content)
|
||||
content = re.sub(r'status\.json\(\)\["status"\]\["is_running"\]', 'status.json()["is_running"]', content)
|
||||
content = re.sub(r'status\.json\(\)\["status"\]\["failed"\]', 'status.json()["failed_downloads"]', content)
|
||||
content = re.sub(r'status\.json\(\)\["status"\]\["completed"\]', 'status.json()["completed_downloads"]', content)
|
||||
|
||||
# Fix assert "status" in data
|
||||
content = re.sub(r'assert "status" in data', 'assert "is_running" in data', content)
|
||||
|
||||
return content
|
||||
|
||||
|
||||
def fix_anime_service_init(content: str) -> str:
|
||||
"""Fix AnimeService initialization in test fixtures."""
|
||||
# This one is complex, so we'll just note files that need manual review
|
||||
if 'AnimeService(' in content and 'directory=' in content:
|
||||
print(" ⚠️ Contains AnimeService with directory= parameter - needs manual review")
|
||||
return content
|
||||
|
||||
|
||||
def main():
|
||||
test_dir = Path(__file__).parent / "tests"
|
||||
|
||||
if not test_dir.exists():
|
||||
print(f"Error: {test_dir} not found")
|
||||
sys.exit(1)
|
||||
|
||||
files_to_fix = [
|
||||
# Download service tests
|
||||
"unit/test_download_service.py",
|
||||
"unit/test_download_progress_websocket.py",
|
||||
"integration/test_download_progress_integration.py",
|
||||
"integration/test_websocket_integration.py",
|
||||
# API tests with queue status
|
||||
"api/test_queue_features.py",
|
||||
"api/test_download_endpoints.py",
|
||||
"frontend/test_existing_ui_integration.py",
|
||||
]
|
||||
|
||||
for file_path in files_to_fix:
|
||||
full_path = test_dir / file_path
|
||||
if not full_path.exists():
|
||||
print(f"Skipping {file_path} (not found)")
|
||||
continue
|
||||
|
||||
print(f"Processing {file_path}...")
|
||||
|
||||
# Read content
|
||||
content = full_path.read_text()
|
||||
original_content = content
|
||||
|
||||
# Apply fixes
|
||||
if 'add_to_queue(' in content:
|
||||
content = fix_add_to_queue_calls(content)
|
||||
|
||||
if 'data["status"]' in content or 'response.json()["status"]' in content:
|
||||
content = fix_queue_status_response(content)
|
||||
|
||||
content = fix_anime_service_init(content)
|
||||
|
||||
# Write back if changed
|
||||
if content != original_content:
|
||||
full_path.write_text(content)
|
||||
print(f" ✓ Updated {file_path}")
|
||||
else:
|
||||
print(f" - No changes needed for {file_path}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user