Skip to content

Commit deae26e

Browse files
authored
Add tests for SwiftLogNoOpLogHandler (#449)
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. Coverage from 89% over all tests, to 90%.
1 parent 1fe83fb commit deae26e

1 file changed

Lines changed: 76 additions & 0 deletions

File tree

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
//===----------------------------------------------------------------------===//
2+
//
3+
// This source file is part of the Swift Logging API open source project
4+
//
5+
// Copyright (c) 2026 Apple Inc. and the Swift Logging API project authors
6+
// Licensed under Apache License v2.0
7+
//
8+
// See LICENSE.txt for license information
9+
// See CONTRIBUTORS.txt for the list of Swift Logging API project authors
10+
//
11+
// SPDX-License-Identifier: Apache-2.0
12+
//
13+
//===----------------------------------------------------------------------===//
14+
15+
import Testing
16+
17+
@testable import Logging
18+
19+
struct SwiftLogNoOpLogHandlerTest {
20+
@Test func initWithNoArguments() {
21+
let handler = SwiftLogNoOpLogHandler()
22+
#expect(handler.logLevel == .critical)
23+
#expect(handler.metadata == [:])
24+
}
25+
26+
@Test func initWithLabel() {
27+
let handler = SwiftLogNoOpLogHandler("some.label")
28+
#expect(handler.logLevel == .critical)
29+
#expect(handler.metadata == [:])
30+
}
31+
32+
@Test func logLevelIgnoresMutations() {
33+
var handler = SwiftLogNoOpLogHandler()
34+
handler.logLevel = .trace
35+
#expect(handler.logLevel == .critical)
36+
}
37+
38+
@Test func metadataIgnoresMutations() {
39+
var handler = SwiftLogNoOpLogHandler()
40+
handler.metadata = ["key": "value"]
41+
#expect(handler.metadata == [:])
42+
}
43+
44+
@Test func metadataSubscriptAlwaysReturnsNil() {
45+
var handler = SwiftLogNoOpLogHandler()
46+
#expect(handler[metadataKey: "key"] == nil)
47+
handler[metadataKey: "key"] = "value"
48+
#expect(handler[metadataKey: "key"] == nil)
49+
}
50+
51+
@Test func logEventDoesNotCrash() {
52+
let handler = SwiftLogNoOpLogHandler()
53+
let event = LogEvent(
54+
level: .critical,
55+
message: "message",
56+
metadata: ["key": "value"],
57+
source: "test",
58+
file: #file,
59+
function: #function,
60+
line: #line
61+
)
62+
handler.log(event: event)
63+
}
64+
65+
@Test func allLogLevelsDoNotCrash() {
66+
var logger = Logger(label: "noop.test", factory: { _ in SwiftLogNoOpLogHandler() })
67+
logger[metadataKey: "key"] = "value"
68+
logger.trace("trace message")
69+
logger.debug("debug message")
70+
logger.info("info message")
71+
logger.notice("notice message")
72+
logger.warning("warning message")
73+
logger.error("error message")
74+
logger.critical("critical message")
75+
}
76+
}

0 commit comments

Comments
 (0)