mirror of
https://github.com/shadoll/moma.git
synced 2026-08-28 11:33:25 +00:00
- 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.
91 lines
2.6 KiB
Python
91 lines
2.6 KiB
Python
# 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'
|
|
if hasattr(sys.stdout, 'reconfigure'):
|
|
sys.stdout.reconfigure(encoding='utf-8')
|
|
if hasattr(sys.stderr, 'reconfigure'):
|
|
sys.stderr.reconfigure(encoding='utf-8')
|
|
|
|
# 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
|
|
|
|
|
|
# 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 |