From adf6959cfb1f386865ee55de390ddfe02d3b25bb Mon Sep 17 00:00:00 2001 From: Chris Leonard <35844395+crleonard@users.noreply.github.com> Date: Sun, 26 Apr 2026 13:48:02 +0100 Subject: [PATCH 1/2] Add tests for SwiftLogNoOpLogHandler Add tests for SwiftLogNoOpLogHandler ### Motivation: `SwiftLogNoOpLogHandler` is a public type with no dedicated test coverage. ### Modifications: * Add tests for both initialisers, `logLevel`, `metadata`, the metadata subscript, `log(event:)`, and end-to-end usage via `Logger`. ### Result: `SwiftLogNoOpLogHandler` has test coverage on par with other handlers. --- .../SwiftLogNoOpLogHandlerTest.swift | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 Tests/LoggingTests/SwiftLogNoOpLogHandlerTest.swift diff --git a/Tests/LoggingTests/SwiftLogNoOpLogHandlerTest.swift b/Tests/LoggingTests/SwiftLogNoOpLogHandlerTest.swift new file mode 100644 index 00000000..4ac27893 --- /dev/null +++ b/Tests/LoggingTests/SwiftLogNoOpLogHandlerTest.swift @@ -0,0 +1,76 @@ +//===----------------------------------------------------------------------===// +// +// This source file is part of the Swift Logging API open source project +// +// Copyright (c) 2026 Apple Inc. and the Swift Logging API project authors +// Licensed under Apache License v2.0 +// +// See LICENSE.txt for license information +// See CONTRIBUTORS.txt for the list of Swift Logging API project authors +// +// SPDX-License-Identifier: Apache-2.0 +// +//===----------------------------------------------------------------------===// + +import Testing + +@testable import Logging + +struct SwiftLogNoOpLogHandlerTest { + @Test func initWithNoArguments() { + let handler = SwiftLogNoOpLogHandler() + #expect(handler.logLevel == .critical) + #expect(handler.metadata == [:]) + } + + @Test func initWithLabel() { + let handler = SwiftLogNoOpLogHandler("some.label") + #expect(handler.logLevel == .critical) + #expect(handler.metadata == [:]) + } + + @Test func logLevelIgnoresMutations() { + var handler = SwiftLogNoOpLogHandler() + handler.logLevel = .trace + #expect(handler.logLevel == .critical) + } + + @Test func metadataIgnoresMutations() { + var handler = SwiftLogNoOpLogHandler() + handler.metadata = ["key": "value"] + #expect(handler.metadata == [:]) + } + + @Test func metadataSubscriptAlwaysReturnsNil() { + var handler = SwiftLogNoOpLogHandler() + #expect(handler[metadataKey: "key"] == nil) + handler[metadataKey: "key"] = "value" + #expect(handler[metadataKey: "key"] == nil) + } + + @Test func logEventIsDiscarded() { + let handler = SwiftLogNoOpLogHandler() + let event = LogEvent( + level: .critical, + message: "should be discarded", + metadata: ["key": "value"], + source: "test", + file: #file, + function: #function, + line: #line + ) + handler.log(event: event) + } + + @Test func loggerUsingNoOpHandlerSilentlyDiscards() { + var logger = Logger(label: "noop.test", factory: { _ in SwiftLogNoOpLogHandler() }) + logger[metadataKey: "key"] = "value" + logger.trace("trace message") + logger.debug("debug message") + logger.info("info message") + logger.notice("notice message") + logger.warning("warning message") + logger.error("error message") + logger.critical("critical message") + } +} From 95b825061f76e974db5ee74b81d7aa8056d6f919 Mon Sep 17 00:00:00 2001 From: Chris Leonard <35844395+crleonard@users.noreply.github.com> Date: Mon, 27 Apr 2026 10:35:16 +0100 Subject: [PATCH 2/2] Rename misleading test names to reflect actual behaviour --- Tests/LoggingTests/SwiftLogNoOpLogHandlerTest.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Tests/LoggingTests/SwiftLogNoOpLogHandlerTest.swift b/Tests/LoggingTests/SwiftLogNoOpLogHandlerTest.swift index 4ac27893..beca4b60 100644 --- a/Tests/LoggingTests/SwiftLogNoOpLogHandlerTest.swift +++ b/Tests/LoggingTests/SwiftLogNoOpLogHandlerTest.swift @@ -48,11 +48,11 @@ struct SwiftLogNoOpLogHandlerTest { #expect(handler[metadataKey: "key"] == nil) } - @Test func logEventIsDiscarded() { + @Test func logEventDoesNotCrash() { let handler = SwiftLogNoOpLogHandler() let event = LogEvent( level: .critical, - message: "should be discarded", + message: "message", metadata: ["key": "value"], source: "test", file: #file, @@ -62,7 +62,7 @@ struct SwiftLogNoOpLogHandlerTest { handler.log(event: event) } - @Test func loggerUsingNoOpHandlerSilentlyDiscards() { + @Test func allLogLevelsDoNotCrash() { var logger = Logger(label: "noop.test", factory: { _ in SwiftLogNoOpLogHandler() }) logger[metadataKey: "key"] = "value" logger.trace("trace message")