mirror of
https://github.com/shadoll/moma.git
synced 2026-08-28 11:33:25 +00:00
Add comprehensive tests for formatter classes, services, and utilities
- Introduced tests for various formatter classes including TextFormatter, DurationFormatter, SizeFormatter, DateFormatter, and more to ensure correct formatting behavior. - Added tests for service classes such as FileTreeService, MetadataService, and RenameService, covering directory validation, metadata extraction, and file renaming functionalities. - Implemented utility tests for LanguageCodeExtractor, PatternExtractor, and FrameClassMatcher to validate their extraction and matching capabilities. - Updated test cases to use datasets for better maintainability and clarity. - Enhanced error handling tests to ensure robustness against missing or invalid data.
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Script to generate empty media test files from filename_patterns.json dataset.
|
||||
|
||||
Usage:
|
||||
uv run python renamer/test/fill_sample_mediafiles.py
|
||||
|
||||
This script:
|
||||
1. Creates the sample_mediafiles directory if it doesn't exist
|
||||
2. Generates empty files for all filenames in filename_patterns.json
|
||||
3. Reports statistics on files created
|
||||
|
||||
The sample_mediafiles directory should be added to .gitignore as these are
|
||||
generated files used only for testing file system operations.
|
||||
"""
|
||||
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def create_sample_mediafiles():
|
||||
"""Create empty media files from filename_patterns.json dataset."""
|
||||
|
||||
# Load filename patterns dataset
|
||||
dataset_file = Path(__file__).parent / 'datasets' / 'filenames' / 'filename_patterns.json'
|
||||
|
||||
if not dataset_file.exists():
|
||||
print(f"❌ Error: Dataset file not found: {dataset_file}")
|
||||
return False
|
||||
|
||||
with open(dataset_file, 'r', encoding='utf-8') as f:
|
||||
data = json.load(f)
|
||||
|
||||
# Create sample_mediafiles directory
|
||||
mediafiles_dir = Path(__file__).parent / 'datasets' / 'sample_mediafiles'
|
||||
mediafiles_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
print(f"Creating sample media files in: {mediafiles_dir}")
|
||||
print(f"Test cases in dataset: {len(data['test_cases'])}")
|
||||
print()
|
||||
|
||||
# Create empty files
|
||||
created = 0
|
||||
skipped = 0
|
||||
errors = []
|
||||
|
||||
for case in data['test_cases']:
|
||||
filename = case['filename']
|
||||
filepath = mediafiles_dir / filename
|
||||
|
||||
try:
|
||||
if filepath.exists():
|
||||
skipped += 1
|
||||
else:
|
||||
# Create empty file
|
||||
filepath.touch()
|
||||
created += 1
|
||||
print(f" ✅ Created: {filename}")
|
||||
except Exception as e:
|
||||
errors.append((filename, str(e)))
|
||||
print(f" ❌ Error creating {filename}: {e}")
|
||||
|
||||
# Summary
|
||||
print()
|
||||
print("=" * 70)
|
||||
print("Summary:")
|
||||
print(f" Created: {created} files")
|
||||
print(f" Skipped (already exist): {skipped} files")
|
||||
print(f" Errors: {len(errors)} files")
|
||||
print(f" Total in dataset: {len(data['test_cases'])} files")
|
||||
print()
|
||||
|
||||
if errors:
|
||||
print("Errors encountered:")
|
||||
for filename, error in errors:
|
||||
print(f" - {filename}: {error}")
|
||||
print()
|
||||
|
||||
# Check for files in directory not in dataset
|
||||
all_files = {f.name for f in mediafiles_dir.glob('*') if f.is_file()}
|
||||
dataset_files = {case['filename'] for case in data['test_cases']}
|
||||
extra_files = all_files - dataset_files
|
||||
|
||||
if extra_files:
|
||||
print(f"⚠️ Warning: {len(extra_files)} files in directory not in dataset:")
|
||||
for f in sorted(extra_files):
|
||||
print(f" - {f}")
|
||||
print()
|
||||
|
||||
print("✅ Sample media files generation complete!")
|
||||
print()
|
||||
print("Next steps:")
|
||||
print("1. Add 'renamer/test/datasets/sample_mediafiles/' to .gitignore")
|
||||
print("2. Run tests to verify files are accessible")
|
||||
|
||||
return True
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import sys
|
||||
success = create_sample_mediafiles()
|
||||
sys.exit(0 if success else 1)
|
||||
Reference in New Issue
Block a user