@@ -78,14 +78,19 @@ struct TracerTests {
7878 let tracer = TestTracer ( )
7979
8080 var spanEnded = false
81- tracer. onEndSpan = { _ in spanEnded = true }
81+ var spanStatus : SpanStatus ? = nil
82+ tracer. onEndSpan = { span in
83+ spanEnded = true
84+ spanStatus = span. status
85+ }
8286
8387 do {
8488 _ = try tracer. withAnySpan ( " hello " , context: . topLevel) { _ in
8589 throw ExampleSpanError ( )
8690 }
8791 } catch {
8892 #expect( spanEnded == true )
93+ #expect( spanStatus? . code == . error)
8994 #expect( error as? ExampleSpanError == ExampleSpanError ( ) )
9095 return
9196 }
@@ -117,7 +122,11 @@ struct TracerTests {
117122 let tracer = TestTracer ( )
118123
119124 var spanEnded = false
120- tracer. onEndSpan = { _ in spanEnded = true }
125+ var spanStatus : SpanStatus ? = nil
126+ tracer. onEndSpan = { span in
127+ spanEnded = true
128+ spanStatus = span. status
129+ }
121130
122131 func operation( span: any Tracing . Span ) throws -> String {
123132 throw ExampleSpanError ( )
@@ -127,6 +136,7 @@ struct TracerTests {
127136 _ = try tracer. withAnySpan ( " hello " , operation)
128137 } catch {
129138 #expect( spanEnded == true )
139+ #expect( spanStatus? . code == . error)
130140 #expect( error as? ExampleSpanError == ExampleSpanError ( ) )
131141 return
132142 }
@@ -181,8 +191,8 @@ struct TracerTests {
181191 func withSpan_automaticBaggagePropagation_async_throws( ) async throws {
182192 let tracer = TestTracer ( )
183193
184- let spanEnded : LockedValueBox < Bool > = . init( false )
185- tracer. onEndSpan = { _ in spanEnded . withValue { $0 = true } }
194+ let endedSpan : LockedValueBox < TestSpan ? > = . init( nil )
195+ tracer. onEndSpan = { span in endedSpan . withValue { $0 = span } }
186196
187197 let operation : @Sendable ( any Tracing . Span ) async throws -> String = { _ in
188198 throw ExampleSpanError ( )
@@ -191,7 +201,7 @@ struct TracerTests {
191201 do {
192202 _ = try await tracer. withAnySpan ( " hello " , operation)
193203 } catch {
194- #expect( spanEnded . withValue { $0 } == true )
204+ #expect( endedSpan . withValue { $0? . status ? . code } == . error )
195205 #expect( error as? ExampleSpanError == ExampleSpanError ( ) )
196206 return
197207 }
@@ -202,8 +212,8 @@ struct TracerTests {
202212 func static_Tracer_withSpan_automaticBaggagePropagation_async_throws( ) async throws {
203213 let tracer = TestTracer ( )
204214
205- let spanEnded : LockedValueBox < Bool > = . init( false )
206- tracer. onEndSpan = { _ in spanEnded . withValue { $0 = true } }
215+ let endedSpan : LockedValueBox < TestSpan ? > = . init( nil )
216+ tracer. onEndSpan = { span in endedSpan . withValue { $0 = span } }
207217
208218 let operation : @Sendable ( any Tracing . Span ) async throws -> String = { _ in
209219 throw ExampleSpanError ( )
@@ -212,7 +222,7 @@ struct TracerTests {
212222 do {
213223 _ = try await tracer. withSpan ( " hello " , operation)
214224 } catch {
215- #expect( spanEnded . withValue { $0 } == true )
225+ #expect( endedSpan . withValue { $0? . status ? . code } == . error )
216226 #expect( error as? ExampleSpanError == ExampleSpanError ( ) )
217227 return
218228 }
@@ -223,8 +233,8 @@ struct TracerTests {
223233 func static_Tracer_withSpan_automaticBaggagePropagation_throws( ) async throws {
224234 let tracer = TestTracer ( )
225235
226- let spanEnded : LockedValueBox < Bool > = . init( false )
227- tracer. onEndSpan = { _ in spanEnded . withValue { $0 = true } }
236+ let endedSpan : LockedValueBox < TestSpan ? > = . init( nil )
237+ tracer. onEndSpan = { span in endedSpan . withValue { $0 = span } }
228238
229239 let operation : @Sendable ( any Tracing . Span ) async throws -> String = { _ in
230240 throw ExampleSpanError ( )
@@ -233,7 +243,7 @@ struct TracerTests {
233243 do {
234244 _ = try await tracer. withSpan ( " hello " , operation)
235245 } catch {
236- #expect( spanEnded . withValue { $0 } == true )
246+ #expect( endedSpan . withValue { $0? . status ? . code } == . error )
237247 #expect( error as? ExampleSpanError == ExampleSpanError ( ) )
238248 return
239249 }
0 commit comments