From b84d5243868c125e3a61f574108775610ac9a4a2 Mon Sep 17 00:00:00 2001 From: GeneralD Date: Sun, 14 Jun 2026 22:40:59 +0900 Subject: [PATCH] test: cover response-less PapyrusError branch in MusicBrainz/LRCLib health checks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `healthCheck()` maps a `PapyrusError` with no `response` to `HealthCheckResult(.fail, detail: error.message)` (the connection-level failure path, before any HTTP response). Existing tests covered `.pass`, HTTP-code, HTTP-(-1), and generic `Error`, but never a response-less `PapyrusError`, leaving that branch (line 46) uncovered. Add the missing case to both suites — region coverage 75.00% -> 87.50% on each file. The remaining gap is the live `init()` URLSession closure, which is a real network call and structurally uncoverable in unit tests. --- Sources/VersionHandler/Resources/version.txt | 2 +- .../LRCLibHealthCheckTests.swift | 13 +++++++++++++ .../MusicBrainzHealthCheckTests.swift | 13 +++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/Sources/VersionHandler/Resources/version.txt b/Sources/VersionHandler/Resources/version.txt index 2236901..8c3aaee 100644 --- a/Sources/VersionHandler/Resources/version.txt +++ b/Sources/VersionHandler/Resources/version.txt @@ -1 +1 @@ -2.13.19 +2.13.20 diff --git a/Tests/LyricsDataSourceTests/LRCLibHealthCheckTests.swift b/Tests/LyricsDataSourceTests/LRCLibHealthCheckTests.swift index e5bd3cd..3a55d2c 100644 --- a/Tests/LyricsDataSourceTests/LRCLibHealthCheckTests.swift +++ b/Tests/LyricsDataSourceTests/LRCLibHealthCheckTests.swift @@ -63,6 +63,19 @@ struct LRCLibHealthCheckTests { #expect(result.latency != nil) } + @Test("healthCheck reports response-less PapyrusError via its message") + func healthCheckPapyrusErrorWithoutResponse() async { + let check = LRCLibHealthCheck { + throw PapyrusError("connection lost") + } + + let result = await check.healthCheck() + + #expect(result.status == .fail) + #expect(result.detail == "connection lost") + #expect(result.latency != nil) + } + @Test("healthCheck reports request errors") func healthCheckError() async { let check = LRCLibHealthCheck { diff --git a/Tests/MetadataDataSourceTests/MusicBrainzHealthCheckTests.swift b/Tests/MetadataDataSourceTests/MusicBrainzHealthCheckTests.swift index 58d7da9..0d534b0 100644 --- a/Tests/MetadataDataSourceTests/MusicBrainzHealthCheckTests.swift +++ b/Tests/MetadataDataSourceTests/MusicBrainzHealthCheckTests.swift @@ -63,6 +63,19 @@ struct MusicBrainzHealthCheckTests { #expect(result.latency != nil) } + @Test("healthCheck reports response-less PapyrusError via its message") + func healthCheckPapyrusErrorWithoutResponse() async { + let check = MusicBrainzHealthCheck { + throw PapyrusError("connection lost") + } + + let result = await check.healthCheck() + + #expect(result.status == .fail) + #expect(result.detail == "connection lost") + #expect(result.latency != nil) + } + @Test("healthCheck reports request errors") func healthCheckError() async { let check = MusicBrainzHealthCheck {