Skip to content

Commit 886fe38

Browse files
committed
add test
1 parent 61e7e37 commit 886fe38

File tree

2 files changed

+52
-10
lines changed

2 files changed

+52
-10
lines changed

Sources/Basics/Observability.swift

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -460,13 +460,9 @@ extension ObservabilityScope {
460460
//@available(*, deprecated, message: "temporary for transition DiagnosticsEngine -> DiagnosticsEmitter")
461461
extension Diagnostic {
462462
init?(_ diagnostic: TSCDiagnostic) {
463-
var metadata: ObservabilityMetadata?
464-
if diagnostic.location is UnknownLocation {
465-
metadata = .none
466-
} else {
467-
metadata = ObservabilityMetadata()
468-
metadata?.legacyDiagnosticLocation = .init(diagnostic.location)
469-
}
463+
var metadata = ObservabilityMetadata()
464+
metadata.legacyDiagnosticLocation = .init(diagnostic.location)
465+
metadata.legacyDiagnosticData = .init(diagnostic.data)
470466

471467
switch diagnostic.behavior {
472468
case .error:
@@ -560,7 +556,7 @@ extension ObservabilityMetadata {
560556

561557
//@available(*, deprecated, message: "temporary for transition DiagnosticsEngine -> DiagnosticsEmitter")
562558
extension ObservabilityMetadata {
563-
fileprivate var legacyDiagnosticData: DiagnosticDataWrapper? {
559+
var legacyDiagnosticData: DiagnosticDataWrapper? {
564560
get {
565561
self[LegacyDataKey.self]
566562
}
@@ -569,11 +565,11 @@ extension ObservabilityMetadata {
569565
}
570566
}
571567

572-
fileprivate enum LegacyDataKey: Key {
568+
enum LegacyDataKey: Key {
573569
typealias Value = DiagnosticDataWrapper
574570
}
575571

576-
fileprivate struct DiagnosticDataWrapper: CustomStringConvertible {
572+
struct DiagnosticDataWrapper: CustomStringConvertible {
577573
let underlying: DiagnosticData
578574

579575
public init (_ underlying: DiagnosticData) {

Tests/BasicsTests/ObservabilitySystemTests.swift

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,52 @@ final class ObservabilitySystemTest: XCTestCase {
160160
}
161161
}
162162

163+
@available(*, deprecated, message: "temporary for transition DiagnosticsEngine -> DiagnosticsEmitter")
164+
func testBridging() throws {
165+
166+
do {
167+
let collector = Collector()
168+
let observabilitySystem = ObservabilitySystem(collector)
169+
let diagnosticsEngine = observabilitySystem.topScope.makeDiagnosticsEngine()
170+
171+
let data = TestData()
172+
let location = TestLocation()
173+
174+
diagnosticsEngine.emit(.error(data), location: location)
175+
testDiagnostics(collector.diagnostics) { result in
176+
var expectedMetadata = ObservabilityMetadata()
177+
expectedMetadata.legacyDiagnosticLocation = .init(location)
178+
expectedMetadata.legacyDiagnosticData = .init(data)
179+
result.check(diagnostic: "\(data)", severity: .error, metadata: expectedMetadata)
180+
}
181+
}
182+
183+
do {
184+
let diagnosticsEngine1 = DiagnosticsEngine()
185+
let observabilitySystem = ObservabilitySystem(diagnosticEngine: diagnosticsEngine1)
186+
let diagnosticsEngine2 = observabilitySystem.topScope.makeDiagnosticsEngine()
187+
188+
let data = TestData()
189+
let location = TestLocation()
190+
191+
diagnosticsEngine2.emit(.error(data), location: location)
192+
193+
194+
XCTAssertEqual(diagnosticsEngine1.diagnostics.count, 1)
195+
XCTAssertEqual(diagnosticsEngine1.diagnostics.first!.message.data as? TestData, data)
196+
XCTAssertEqual(diagnosticsEngine1.diagnostics.first!.location as? TestLocation, location)
197+
}
198+
199+
struct TestData: DiagnosticData, Equatable {
200+
var description: String = UUID().uuidString
201+
}
202+
203+
struct TestLocation: DiagnosticLocation, Equatable {
204+
var description: String = UUID().uuidString
205+
206+
}
207+
}
208+
163209
struct Collector: ObservabilityHandlerProvider, DiagnosticsHandler {
164210
private let _diagnostics = ThreadSafeArrayStore<Diagnostic>()
165211

0 commit comments

Comments
 (0)