39 lines
1.5 KiB
Swift
39 lines
1.5 KiB
Swift
import CodexBarCore
|
|
import Foundation
|
|
import Testing
|
|
|
|
struct ConfigurationDocsProviderIDTests {
|
|
@Test
|
|
func `configuration docs list every provider id in enum order`() throws {
|
|
let rootURL = try Self.repoRoot()
|
|
let docsURL = rootURL.appending(path: "docs/configuration.md")
|
|
let docs = try String(contentsOf: docsURL, encoding: .utf8)
|
|
|
|
let marker = "## Provider IDs"
|
|
let sectionStart = try #require(docs.range(of: marker)?.upperBound)
|
|
let section = docs[sectionStart...]
|
|
let idsLine = try #require(section.split(separator: "\n").first { $0.hasPrefix("`") })
|
|
|
|
let documentedIDs = idsLine
|
|
.split(separator: ",")
|
|
.map { $0.trimmingCharacters(in: CharacterSet(charactersIn: " `.")) }
|
|
let expectedIDs = UsageProvider.allCases.map(\.rawValue)
|
|
|
|
#expect(documentedIDs == expectedIDs)
|
|
}
|
|
|
|
private static func repoRoot() throws -> URL {
|
|
var directory = URL(filePath: #filePath).deletingLastPathComponent()
|
|
for _ in 0..<12 {
|
|
let packageManifest = directory.appending(path: "Package.swift")
|
|
if FileManager.default.fileExists(atPath: packageManifest.path(percentEncoded: false)) {
|
|
return directory
|
|
}
|
|
directory.deleteLastPathComponent()
|
|
}
|
|
throw NSError(domain: "ConfigurationDocsProviderIDTests", code: 1, userInfo: [
|
|
NSLocalizedDescriptionKey: "Could not locate repo root (Package.swift) from \(#filePath)",
|
|
])
|
|
}
|
|
}
|