From cb9040cecd078c018ff03025a1096dd56568ca0a Mon Sep 17 00:00:00 2001 From: Rob Martin Date: Sun, 4 Oct 2026 11:39:47 -0600 Subject: [PATCH] fix(release-search): report a ValueError from a source as that source's error, not as an unknown source --- shelfmark/core/release_search.py | 5 +++-- tests/core/test_release_search.py | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/shelfmark/core/release_search.py b/shelfmark/core/release_search.py index 44064483b..be082e258 100644 --- a/shelfmark/core/release_search.py +++ b/shelfmark/core/release_search.py @@ -47,7 +47,10 @@ def search_source_releases( try: source = get_source(source_name) + except ValueError: + return None, [], f"Unknown source: {source_name}" + try: plan = build_release_search_plan( search_book, languages=languages, @@ -84,8 +87,6 @@ def search_source_releases( releases = source.search( search_book, plan, expand_search=expand_search, content_type=content_type ) - except ValueError: - return None, [], f"Unknown source: {source_name}" except (SourceUnavailableError, *_OPERATIONAL_ERRORS) as exc: logger.warning("Release search failed for source %s: %s", source_name, exc) return None, [], f"{source_name}: {exc!s}" diff --git a/tests/core/test_release_search.py b/tests/core/test_release_search.py index 3434d28a2..2755966b9 100644 --- a/tests/core/test_release_search.py +++ b/tests/core/test_release_search.py @@ -54,8 +54,8 @@ def _raise(name: str) -> Any: @pytest.mark.parametrize( "exc", - [SourceUnavailableError("down"), OSError("boom"), RuntimeError("bad")], - ids=["unavailable", "oserror", "runtime"], + [SourceUnavailableError("down"), OSError("boom"), RuntimeError("bad"), ValueError("odd")], + ids=["unavailable", "oserror", "runtime", "valueerror"], ) def test_source_failures_become_messages(monkeypatch: pytest.MonkeyPatch, exc: Exception) -> None: src = _Source(error=exc)