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:
@@ -1,6 +1,9 @@
|
||||
# conftest.py - pytest configuration
|
||||
import os
|
||||
import sys
|
||||
import json
|
||||
import pytest
|
||||
from pathlib import Path
|
||||
|
||||
# Force UTF-8 encoding for all I/O operations
|
||||
os.environ['PYTHONIOENCODING'] = 'utf-8'
|
||||
@@ -12,4 +15,77 @@ if hasattr(sys.stderr, 'reconfigure'):
|
||||
# Configure pytest to handle Unicode properly
|
||||
def pytest_configure(config):
|
||||
# Ensure UTF-8 encoding for test output
|
||||
config.option.capture = 'no' # Don't capture output to avoid encoding issues
|
||||
config.option.capture = 'no' # Don't capture output to avoid encoding issues
|
||||
|
||||
|
||||
# Dataset loading helpers
|
||||
@pytest.fixture
|
||||
def datasets_dir():
|
||||
"""Get the datasets directory path."""
|
||||
return Path(__file__).parent / "datasets"
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def load_filename_patterns(datasets_dir):
|
||||
"""Load filename pattern test cases from JSON dataset.
|
||||
|
||||
Returns:
|
||||
list: List of test case dictionaries with 'filename' and 'expected' keys
|
||||
"""
|
||||
dataset_file = datasets_dir / "filenames" / "filename_patterns.json"
|
||||
with open(dataset_file, 'r', encoding='utf-8') as f:
|
||||
data = json.load(f)
|
||||
return data['test_cases']
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def load_frame_class_tests(datasets_dir):
|
||||
"""Load frame class test cases from JSON dataset.
|
||||
|
||||
Returns:
|
||||
list: List of frame class test dictionaries
|
||||
"""
|
||||
dataset_file = datasets_dir / "mediainfo" / "frame_class_tests.json"
|
||||
with open(dataset_file, 'r', encoding='utf-8') as f:
|
||||
return json.load(f)
|
||||
|
||||
|
||||
def load_dataset(dataset_name: str) -> dict:
|
||||
"""Load a dataset by name.
|
||||
|
||||
Args:
|
||||
dataset_name: Name of the dataset file (without .json extension)
|
||||
|
||||
Returns:
|
||||
dict: Loaded dataset
|
||||
|
||||
Example:
|
||||
>>> data = load_dataset('filename_patterns')
|
||||
>>> test_cases = data['test_cases']
|
||||
"""
|
||||
datasets_dir = Path(__file__).parent / "datasets"
|
||||
|
||||
# Search for the dataset in subdirectories
|
||||
for subdir in ['filenames', 'mediainfo', 'expected_results']:
|
||||
dataset_file = datasets_dir / subdir / f"{dataset_name}.json"
|
||||
if dataset_file.exists():
|
||||
with open(dataset_file, 'r', encoding='utf-8') as f:
|
||||
return json.load(f)
|
||||
|
||||
raise FileNotFoundError(f"Dataset '{dataset_name}' not found in datasets directory")
|
||||
|
||||
|
||||
def get_test_file_path(filename: str) -> Path:
|
||||
"""Get path to a test file in the datasets directory.
|
||||
|
||||
Args:
|
||||
filename: Name of the test file
|
||||
|
||||
Returns:
|
||||
Path: Full path to the test file
|
||||
|
||||
Example:
|
||||
>>> path = get_test_file_path('test.mkv')
|
||||
>>> # Returns: /path/to/test/datasets/sample_mediafiles/test.mkv
|
||||
"""
|
||||
return Path(__file__).parent / "datasets" / "sample_mediafiles" / filename
|
||||
Reference in New Issue
Block a user