diff --git a/Sources/DocCMiddleware/Internal/Protocols/Pathable.swift b/Sources/DocCMiddleware/Internal/Protocols/Pathable.swift index 2d0f7a4..b3e3425 100644 --- a/Sources/DocCMiddleware/Internal/Protocols/Pathable.swift +++ b/Sources/DocCMiddleware/Internal/Protocols/Pathable.swift @@ -10,7 +10,7 @@ // // ===----------------------------------------------------------------------=== -/// A type that provides a relative path representation. +/// A protocol that provides a relative path representation. protocol Pathable { // MARK: Properties diff --git a/Tests/DocCMiddleware/Tests/Internal/Extensions/LoggerMetadata+HelpersTests.swift b/Tests/DocCMiddleware/Tests/Internal/Extensions/LoggerMetadata+HelpersTests.swift index 6349e31..25fa0a7 100644 --- a/Tests/DocCMiddleware/Tests/Internal/Extensions/LoggerMetadata+HelpersTests.swift +++ b/Tests/DocCMiddleware/Tests/Internal/Extensions/LoggerMetadata+HelpersTests.swift @@ -79,7 +79,7 @@ private extension LoggerMetadata_HelpersTests { redirect: String? = nil ) { // GIVEN - let logger: Logger = .test + let logger: Logger = .test() let context: MockRequestContext = .init(logger: logger) let request: Request = .test(method: method) diff --git a/Tests/DocCMiddleware/Tests/Public/Middlewares/DocCMiddlewareTests.swift b/Tests/DocCMiddleware/Tests/Public/Middlewares/DocCMiddlewareTests.swift index 1f36e8b..6daa206 100644 --- a/Tests/DocCMiddleware/Tests/Public/Middlewares/DocCMiddlewareTests.swift +++ b/Tests/DocCMiddleware/Tests/Public/Middlewares/DocCMiddlewareTests.swift @@ -12,11 +12,11 @@ import Testing +import protocol Hummingbird.FileProvider + import struct Hummingbird.LocalFileSystem import struct Logging.Logger -import protocol Hummingbird.FileProvider - @testable import struct DocCMiddleware.DocCMiddleware @Suite("DocC Middleware", .tags(.middleware)) @@ -79,7 +79,7 @@ private extension DocCMiddlewareTests { /// - fileProvider: A type that conforms to the protocol that defines file system interactions, if any. func assertInit( configuration: DocCMiddleware.Configuration, - logger: Logger = .test, + logger: Logger = .test(), fileProvider: (any FileProvider)? = nil ) { // GIVEN diff --git a/Tests/DocCMiddleware/Types/Extensions/Logger+Constants.swift b/Tests/DocCMiddleware/Types/Extensions/Logger+Constants.swift deleted file mode 100644 index d3e2cbe..0000000 --- a/Tests/DocCMiddleware/Types/Extensions/Logger+Constants.swift +++ /dev/null @@ -1,32 +0,0 @@ -// ===----------------------------------------------------------------------=== -// -// This source file is part of the Hummingbird DocC Middleware open source project -// -// Copyright (c) 2025 Röck+Cöde VoF. and the Hummingbird DocC Middleware project authors -// Licensed under the EUPL 1.2 or later. -// -// See LICENSE for license information -// See CONTRIBUTORS for the list of Hummingbird DocC Middleware project authors -// -// ===----------------------------------------------------------------------=== - -import Foundation -import Logging -import Testing - -extension Logger { - - // MARK: Constants - - /// Creates a logger instance that is ready to use in test cases. - static let test: Self = { - var logger = Logger(label: "test.hummingbird-docc-middleware.logger") - - logger.logLevel = try! #require(Logger.Level.allCases.randomElement()) - - logger[metadataKey: "hb.request.id"] = "\(UUID().uuidString)" - - return logger - }() - -} diff --git a/Tests/DocCMiddleware/Types/Extensions/Logger+Helpers.swift b/Tests/DocCMiddleware/Types/Extensions/Logger+Helpers.swift new file mode 100644 index 0000000..d0cec00 --- /dev/null +++ b/Tests/DocCMiddleware/Types/Extensions/Logger+Helpers.swift @@ -0,0 +1,57 @@ +// ===----------------------------------------------------------------------=== +// +// This source file is part of the Hummingbird DocC Middleware open source project +// +// Copyright (c) 2025 Röck+Cöde VoF. and the Hummingbird DocC Middleware project authors +// Licensed under the EUPL 1.2 or later. +// +// See LICENSE for license information +// See CONTRIBUTORS for the list of Hummingbird DocC Middleware project authors +// +// ===----------------------------------------------------------------------=== + +import Foundation +import Testing + +import protocol Logging.LogHandler + +import struct Logging.Logger + +extension Logger { + + // MARK: Functions + + /// Generates a logger instance that is ready to use in test cases. + /// - Parameters: + /// - level: A logger level, if any. + /// - handler: A custom log handler, if any. + /// - Returns: A generated logger instance ready to use in test cases. + static func test( + level: Logger.Level? = nil, + handler: (any LogHandler)? = nil + ) -> Self { + var logger: Logger = if let handler { + .init(label: .loggerLabel) { _ in handler } + } else { + .init(label: .loggerLabel) + } + + logger.logLevel = if let level { + level + } else { + try! #require(Logger.Level.allCases.randomElement()) + } + + logger[metadataKey: "hb.request.id"] = "\(UUID().uuidString)" + + return logger + } + +} + +// MARK: - Constants + +private extension String { + /// A label to assign to a test logger instance. + static let loggerLabel = "test.hummingbird-docc-middleware.logger" +}