@@ -377,39 +377,43 @@ import Testing
377
377
}
378
378
}
379
379
380
- @Test ( " Receive Server-Sent Event (SSE) " , . httpClientTransportSetup)
381
- func testReceiveSSE( ) async throws {
382
- let configuration = URLSessionConfiguration . ephemeral
383
- configuration. protocolClasses = [ MockURLProtocol . self]
384
-
385
- let transport = HTTPClientTransport (
386
- endpoint: testEndpoint, configuration: configuration, streaming: true , logger: nil )
387
-
388
- let eventString = " id: event1 \n data: { \" key \" : \" value \" } \n \n "
389
- let sseEventData = eventString. data ( using: . utf8) !
390
-
391
- await MockURLProtocol . requestHandlerStorage. setHandler {
392
- [ testEndpoint] ( request: URLRequest ) in
393
- #expect( request. url == testEndpoint)
394
- #expect( request. httpMethod == " GET " )
395
- #expect( request. value ( forHTTPHeaderField: " Accept " ) == " text/event-stream " )
396
- let response = HTTPURLResponse (
397
- url: testEndpoint, statusCode: 200 , httpVersion: " HTTP/1.1 " ,
398
- headerFields: [ " Content-Type " : " text/event-stream " ] ) !
399
- return ( response, sseEventData)
400
- }
380
+ // Skip SSE tests on platforms that don't support streaming
381
+ #if !canImport(FoundationNetworking)
382
+ @Test ( " Receive Server-Sent Event (SSE) " , . httpClientTransportSetup)
383
+ func testReceiveSSE( ) async throws {
384
+ let configuration = URLSessionConfiguration . ephemeral
385
+ configuration. protocolClasses = [ MockURLProtocol . self]
386
+
387
+ let transport = HTTPClientTransport (
388
+ endpoint: testEndpoint, configuration: configuration, streaming: true ,
389
+ logger: nil )
390
+
391
+ let eventString = " id: event1 \n data: { \" key \" : \" value \" } \n \n "
392
+ let sseEventData = eventString. data ( using: . utf8) !
393
+
394
+ await MockURLProtocol . requestHandlerStorage. setHandler {
395
+ [ testEndpoint] ( request: URLRequest ) in
396
+ #expect( request. url == testEndpoint)
397
+ #expect( request. httpMethod == " GET " )
398
+ #expect( request. value ( forHTTPHeaderField: " Accept " ) == " text/event-stream " )
399
+ let response = HTTPURLResponse (
400
+ url: testEndpoint, statusCode: 200 , httpVersion: " HTTP/1.1 " ,
401
+ headerFields: [ " Content-Type " : " text/event-stream " ] ) !
402
+ return ( response, sseEventData)
403
+ }
401
404
402
- try await transport. connect ( )
403
- try await Task . sleep ( for: . milliseconds( 100 ) )
405
+ try await transport. connect ( )
406
+ try await Task . sleep ( for: . milliseconds( 100 ) )
404
407
405
- let stream = await transport. receive ( )
406
- var iterator = stream. makeAsyncIterator ( )
408
+ let stream = await transport. receive ( )
409
+ var iterator = stream. makeAsyncIterator ( )
407
410
408
- let expectedData = #"{"key":"value"}"# . data ( using: . utf8) !
409
- let receivedData = try await iterator. next ( )
411
+ let expectedData = #"{"key":"value"}"# . data ( using: . utf8) !
412
+ let receivedData = try await iterator. next ( )
410
413
411
- #expect( receivedData == expectedData)
412
- }
414
+ #expect( receivedData == expectedData)
415
+ }
416
+ #endif // !canImport(FoundationNetworking)
413
417
}
414
418
415
419
#endif // swift(>=6.1)
0 commit comments