#!/usr/bin/env python3 """ Test script to debug file extension detection issues """ import sys import os sys.path.insert(0, os.path.dirname(__file__)) from unittest.mock import MagicMock from bdfr.resource import Resource def test_extension_detection(): """Test extension detection with various URL patterns""" test_cases = [ # Standard URLs with extensions ("https://example.com/image.jpg", ".jpg"), ("https://example.com/video.mp4", ".mp4"), ("https://files.example.com/document.pdf", ".pdf"), # URLs without extensions ("https://example.com/api/data", None), ("https://example.com/path/without/extension", None), # URLs with query parameters ("https://example.com/image.jpg?size=large", ".jpg"), ("https://example.com/video.mp4?utm_source=test", ".mp4"), # URLs with fragments ("https://example.com/image.png#section", ".png"), # Complex paths ("https://imgur.com/a/gallery123", None), ("https://reddit.com/r/test/abc123_def456_789", None), # Edge cases that might cause weird names ("https://example.com/L7SW9E~G", None), ("https://example.com/temp/file", None), # Reddit media URLs (the actual issue) ("https://www.reddit.com/media?url=https%3A%2F%2Fi.redd.it%2Fr2mv10i4vkfd1.jpeg", ".jpeg"), ("https://i.redd.it/r2mv10i4vkfd1.jpeg", ".jpeg"), ] print("Testing extension detection with various URLs:") print("=" * 60) for url, expected in test_cases: # Create a mock submission mock_submission = MagicMock() mock_submission.id = "test123" # Create resource and test extension detection resource = Resource(mock_submission, url, lambda: None) print(f"URL: {url}") print(f"Expected: {expected}") print(f"Detected: {resource.extension}") print(f"Match: {'YES' if resource.extension == expected else 'NO'}") print("-" * 40) if __name__ == "__main__": test_extension_detection()