Files
wehub-resource-sync 7a0da7932b
OSV-Scanner (Scheduled) / scan-scheduled (push) Failing after 0s
Create Release / test-gate (push) Has been cancelled
Create Release / release-gate (push) Has been cancelled
Create Release / ci-gate (push) Has been cancelled
Create Release / version-check (push) Has been cancelled
Create Release / e2e-test-gate (push) Has been cancelled
Create Release / responsive-test-gate (push) Has been cancelled
Create Release / compat-test-gate (push) Has been cancelled
Create Release / compose-integration-gate (push) Has been cancelled
Create Release / vulture-gate (push) Has been cancelled
Create Release / build (push) Has been cancelled
Create Release / provenance (push) Has been cancelled
Create Release / prerelease-docker (push) Has been cancelled
Create Release / publish-docker (push) Has been cancelled
Create Release / create-release (push) Has been cancelled
Create Release / cleanup-changelog (push) Has been cancelled
Create Release / trigger-pypi (push) Has been cancelled
Create Release / monitor-pypi (push) Has been cancelled
Create Release / Clean up orphan prerelease tags and signatures (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [research-form] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [research-metrics] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [research-workflow] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [settings-core] (push) Has been cancelled
CodeQL Advanced / Analyze (javascript-typescript) (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [history-news] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [library] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [link-analytics] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [chat-core] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [chat-lifecycle] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [error-benchmark] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [settings-pages] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) (push) Has been cancelled
Docker Tests (Consolidated) / Accessibility Tests (push) Has been cancelled
Docker Tests (Consolidated) / LLM Unit Tests (push) Has been cancelled
Docker Tests (Consolidated) / LLM Example Tests (push) Has been cancelled
Docker Tests (Consolidated) / Production Image Smoke Test (push) Has been cancelled
Docker Tests (Consolidated) / Infrastructure Tests (push) Has been cancelled
OSSF Scorecard / OSSF Security Scorecard Analysis (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [mobile] (push) Has been cancelled
Backwards Compatibility / Verify Encryption Constants (push) Has been cancelled
Backwards Compatibility / PyPI Version Compatibility (push) Has been cancelled
Backwards Compatibility / Database Migration Tests (push) Has been cancelled
CodeQL Advanced / Analyze (python) (push) Has been cancelled
Docker Tests (Consolidated) / detect-changes (push) Has been cancelled
Docker Tests (Consolidated) / Build Test Image (push) Has been cancelled
Docker Tests (Consolidated) / All Pytest Tests + Coverage (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [accessibility] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [api-crud] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [auth-login] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [auth-pages] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [auth-register] (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:08:55 +08:00

360 lines
12 KiB
Python

"""
Behavioral tests for loader_registry module.
Tests the document loader registry functions for file type detection and loader selection.
"""
class TestGetSupportedExtensions:
"""Tests for get_supported_extensions function."""
def test_returns_list(self):
"""Returns a list of extensions."""
from local_deep_research.document_loaders.loader_registry import (
get_supported_extensions,
)
result = get_supported_extensions()
assert isinstance(result, list)
def test_returns_non_empty_list(self):
"""Returns non-empty list of extensions."""
from local_deep_research.document_loaders.loader_registry import (
get_supported_extensions,
)
result = get_supported_extensions()
assert len(result) > 0
def test_all_extensions_start_with_dot(self):
"""All extensions start with a dot."""
from local_deep_research.document_loaders.loader_registry import (
get_supported_extensions,
)
result = get_supported_extensions()
for ext in result:
assert ext.startswith("."), f"{ext} does not start with dot"
def test_includes_pdf(self):
"""Includes PDF extension."""
from local_deep_research.document_loaders.loader_registry import (
get_supported_extensions,
)
result = get_supported_extensions()
assert ".pdf" in result
def test_includes_txt(self):
"""Includes TXT extension."""
from local_deep_research.document_loaders.loader_registry import (
get_supported_extensions,
)
result = get_supported_extensions()
assert ".txt" in result
def test_includes_markdown(self):
"""Includes markdown extensions."""
from local_deep_research.document_loaders.loader_registry import (
get_supported_extensions,
)
result = get_supported_extensions()
assert ".md" in result
def test_includes_docx(self):
"""Includes DOCX extension."""
from local_deep_research.document_loaders.loader_registry import (
get_supported_extensions,
)
result = get_supported_extensions()
assert ".docx" in result
def test_includes_csv(self):
"""Includes CSV extension."""
from local_deep_research.document_loaders.loader_registry import (
get_supported_extensions,
)
result = get_supported_extensions()
assert ".csv" in result
def test_includes_json(self):
"""Includes JSON extension."""
from local_deep_research.document_loaders.loader_registry import (
get_supported_extensions,
)
result = get_supported_extensions()
assert ".json" in result
def test_includes_yaml(self):
"""Includes YAML extensions."""
from local_deep_research.document_loaders.loader_registry import (
get_supported_extensions,
)
result = get_supported_extensions()
assert ".yaml" in result
assert ".yml" in result
def test_includes_html(self):
"""Includes HTML extensions."""
from local_deep_research.document_loaders.loader_registry import (
get_supported_extensions,
)
result = get_supported_extensions()
assert ".html" in result
assert ".htm" in result
def test_includes_xml(self):
"""Includes XML extension."""
from local_deep_research.document_loaders.loader_registry import (
get_supported_extensions,
)
result = get_supported_extensions()
assert ".xml" in result
def test_includes_jupyter(self):
"""Includes Jupyter notebook extension."""
from local_deep_research.document_loaders.loader_registry import (
get_supported_extensions,
)
result = get_supported_extensions()
assert ".ipynb" in result
def test_includes_toml(self):
"""Includes TOML extension."""
from local_deep_research.document_loaders.loader_registry import (
get_supported_extensions,
)
result = get_supported_extensions()
assert ".toml" in result
class TestIsExtensionSupported:
"""Tests for is_extension_supported function."""
def test_pdf_is_supported(self):
"""PDF extension is supported."""
from local_deep_research.document_loaders.loader_registry import (
is_extension_supported,
)
assert is_extension_supported(".pdf") is True
def test_txt_is_supported(self):
"""TXT extension is supported."""
from local_deep_research.document_loaders.loader_registry import (
is_extension_supported,
)
assert is_extension_supported(".txt") is True
def test_md_is_supported(self):
"""Markdown extension is supported."""
from local_deep_research.document_loaders.loader_registry import (
is_extension_supported,
)
assert is_extension_supported(".md") is True
def test_json_is_supported(self):
"""JSON extension is supported."""
from local_deep_research.document_loaders.loader_registry import (
is_extension_supported,
)
assert is_extension_supported(".json") is True
def test_yaml_is_supported(self):
"""YAML extension is supported."""
from local_deep_research.document_loaders.loader_registry import (
is_extension_supported,
)
assert is_extension_supported(".yaml") is True
assert is_extension_supported(".yml") is True
def test_unknown_extension_not_supported(self):
"""Unknown extension is not supported."""
from local_deep_research.document_loaders.loader_registry import (
is_extension_supported,
)
assert is_extension_supported(".xyz123") is False
def test_handles_extension_without_dot(self):
"""Handles extension without leading dot."""
from local_deep_research.document_loaders.loader_registry import (
is_extension_supported,
)
assert is_extension_supported("pdf") is True
assert is_extension_supported("txt") is True
def test_case_insensitive(self):
"""Extension check is case insensitive."""
from local_deep_research.document_loaders.loader_registry import (
is_extension_supported,
)
assert is_extension_supported(".PDF") is True
assert is_extension_supported(".Pdf") is True
assert is_extension_supported(".pDf") is True
def test_empty_extension_not_supported(self):
"""Empty extension is not supported."""
from local_deep_research.document_loaders.loader_registry import (
is_extension_supported,
)
assert is_extension_supported("") is False
def test_dot_only_not_supported(self):
"""Dot only is not supported."""
from local_deep_research.document_loaders.loader_registry import (
is_extension_supported,
)
assert is_extension_supported(".") is False
class TestGetLoaderClassForExtension:
"""Tests for get_loader_class_for_extension function."""
def test_returns_tuple_for_supported_extension(self):
"""Returns tuple for supported extension."""
from local_deep_research.document_loaders.loader_registry import (
get_loader_class_for_extension,
)
result = get_loader_class_for_extension(".pdf")
assert result is not None
assert isinstance(result, tuple)
assert len(result) == 2
def test_returns_none_for_unsupported_extension(self):
"""Returns None for unsupported extension."""
from local_deep_research.document_loaders.loader_registry import (
get_loader_class_for_extension,
)
result = get_loader_class_for_extension(".xyz123")
assert result is None
def test_first_element_is_class(self):
"""First element is a class."""
from local_deep_research.document_loaders.loader_registry import (
get_loader_class_for_extension,
)
result = get_loader_class_for_extension(".pdf")
assert result is not None
loader_class = result[0]
assert isinstance(loader_class, type)
def test_second_element_is_dict(self):
"""Second element is a dict of kwargs."""
from local_deep_research.document_loaders.loader_registry import (
get_loader_class_for_extension,
)
result = get_loader_class_for_extension(".pdf")
assert result is not None
kwargs = result[1]
assert isinstance(kwargs, dict)
def test_handles_extension_without_dot(self):
"""Handles extension without leading dot."""
from local_deep_research.document_loaders.loader_registry import (
get_loader_class_for_extension,
)
result = get_loader_class_for_extension("pdf")
assert result is not None
def test_case_insensitive(self):
"""Extension lookup is case insensitive."""
from local_deep_research.document_loaders.loader_registry import (
get_loader_class_for_extension,
)
result_lower = get_loader_class_for_extension(".pdf")
result_upper = get_loader_class_for_extension(".PDF")
assert result_lower is not None
assert result_upper is not None
assert result_lower[0] == result_upper[0]
def test_json_returns_simple_json_loader(self):
"""JSON extension returns SimpleJSONLoader."""
from local_deep_research.document_loaders.json_loader import (
SimpleJSONLoader,
)
from local_deep_research.document_loaders.loader_registry import (
get_loader_class_for_extension,
)
result = get_loader_class_for_extension(".json")
assert result is not None
assert result[0] == SimpleJSONLoader
def test_yaml_returns_yaml_loader(self):
"""YAML extension returns YAMLLoader."""
from local_deep_research.document_loaders.loader_registry import (
get_loader_class_for_extension,
)
from local_deep_research.document_loaders.yaml_loader import YAMLLoader
result = get_loader_class_for_extension(".yaml")
assert result is not None
assert result[0] == YAMLLoader
def test_txt_has_encoding_kwargs(self):
"""TXT loader has encoding kwargs."""
from local_deep_research.document_loaders.loader_registry import (
get_loader_class_for_extension,
)
result = get_loader_class_for_extension(".txt")
assert result is not None
kwargs = result[1]
assert "encoding" in kwargs
class TestLoaderRegistry:
"""Tests for LOADER_REGISTRY constant."""
def test_registry_is_dict(self):
"""LOADER_REGISTRY is a dictionary."""
from local_deep_research.document_loaders.loader_registry import (
LOADER_REGISTRY,
)
assert isinstance(LOADER_REGISTRY, dict)
def test_registry_has_loader_class_key(self):
"""Each registry entry has loader_class key."""
from local_deep_research.document_loaders.loader_registry import (
LOADER_REGISTRY,
)
for ext, entry in LOADER_REGISTRY.items():
assert "loader_class" in entry, f"{ext} missing loader_class"
def test_registry_keys_are_lowercase(self):
"""Registry keys are lowercase extensions."""
from local_deep_research.document_loaders.loader_registry import (
LOADER_REGISTRY,
)
for ext in LOADER_REGISTRY.keys():
assert ext.startswith(".")
assert ext == ext.lower()