@@ -114,7 +114,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
114114 ) else { return }
115115 XCTAssertEqual ( response. headers [ " content-length " ] , [ " 4 " ] )
116116 guard let body = await XCTAssertNoThrowWithResult (
117- try await response. body. collect ( )
117+ try await response. body. collect ( upTo : 1024 )
118118 ) else { return }
119119 XCTAssertEqual ( body, ByteBuffer ( string: " 1234 " ) )
120120 }
@@ -137,7 +137,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
137137 ) else { return }
138138 XCTAssertEqual ( response. headers [ " content-length " ] , [ ] )
139139 guard let body = await XCTAssertNoThrowWithResult (
140- try await response. body. collect ( )
140+ try await response. body. collect ( upTo : 1024 )
141141 ) else { return }
142142 XCTAssertEqual ( body, ByteBuffer ( string: " 1234 " ) )
143143 }
@@ -160,7 +160,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
160160 ) else { return }
161161 XCTAssertEqual ( response. headers [ " content-length " ] , [ ] )
162162 guard let body = await XCTAssertNoThrowWithResult (
163- try await response. body. collect ( )
163+ try await response. body. collect ( upTo : 1024 )
164164 ) else { return }
165165 XCTAssertEqual ( body, ByteBuffer ( string: " 1234 " ) )
166166 }
@@ -183,7 +183,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
183183 ) else { return }
184184 XCTAssertEqual ( response. headers [ " content-length " ] , [ " 4 " ] )
185185 guard let body = await XCTAssertNoThrowWithResult (
186- try await response. body. collect ( )
186+ try await response. body. collect ( upTo : 1024 )
187187 ) else { return }
188188 XCTAssertEqual ( body, ByteBuffer ( string: " 1234 " ) )
189189 }
@@ -210,7 +210,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
210210 ) else { return }
211211 XCTAssertEqual ( response. headers [ " content-length " ] , [ ] )
212212 guard let body = await XCTAssertNoThrowWithResult (
213- try await response. body. collect ( )
213+ try await response. body. collect ( upTo : 1024 )
214214 ) else { return }
215215 XCTAssertEqual ( body, ByteBuffer ( string: " 1234 " ) )
216216 }
@@ -233,7 +233,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
233233 ) else { return }
234234 XCTAssertEqual ( response. headers [ " content-length " ] , [ ] )
235235 guard let body = await XCTAssertNoThrowWithResult (
236- try await response. body. collect ( )
236+ try await response. body. collect ( upTo : 1024 )
237237 ) else { return }
238238 XCTAssertEqual ( body, ByteBuffer ( string: " 1234 " ) )
239239 }
@@ -580,7 +580,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
580580 ) else {
581581 return
582582 }
583- guard let body = await XCTAssertNoThrowWithResult ( try await response. body. collect ( ) ) else { return }
583+ guard let body = await XCTAssertNoThrowWithResult ( try await response. body. collect ( upTo : 1024 ) ) else { return }
584584 var maybeRequestInfo : RequestInfo ?
585585 XCTAssertNoThrow ( maybeRequestInfo = try JSONDecoder ( ) . decode ( RequestInfo . self, from: body) )
586586 guard let requestInfo = maybeRequestInfo else { return }
@@ -641,7 +641,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
641641 ) else { return }
642642 XCTAssertEqual ( response1. headers [ " content-length " ] , [ ] )
643643 guard let body = await XCTAssertNoThrowWithResult (
644- try await response1. body. collect ( )
644+ try await response1. body. collect ( upTo : 1024 )
645645 ) else { return }
646646 XCTAssertEqual ( body, ByteBuffer ( string: " 1234 " ) )
647647
@@ -650,7 +650,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
650650 ) else { return }
651651 XCTAssertEqual ( response2. headers [ " content-length " ] , [ ] )
652652 guard let body = await XCTAssertNoThrowWithResult (
653- try await response2. body. collect ( )
653+ try await response2. body. collect ( upTo : 1024 )
654654 ) else { return }
655655 XCTAssertEqual ( body, ByteBuffer ( string: " 1234 " ) )
656656 }
@@ -803,13 +803,24 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
803803 XCTAssertEqual ( response. version, . http2)
804804 }
805805 }
806- }
807806
808- extension AsyncSequence where Element == ByteBuffer {
809- func collect( ) async rethrows -> ByteBuffer {
810- try await self . reduce ( into: ByteBuffer ( ) ) { accumulatingBuffer, nextBuffer in
811- var nextBuffer = nextBuffer
812- accumulatingBuffer. writeBuffer ( & nextBuffer)
807+ func testSimpleContentLengthErrorNoBody( ) {
808+ guard #available( macOS 10 . 15 , iOS 13 . 0 , watchOS 6 . 0 , tvOS 13 . 0 , * ) else { return }
809+ XCTAsyncTest {
810+ let bin = HTTPBin ( . http2( compress: false ) )
811+ defer { XCTAssertNoThrow ( try bin. shutdown ( ) ) }
812+ let client = makeDefaultHTTPClient ( )
813+ defer { XCTAssertNoThrow ( try client. syncShutdown ( ) ) }
814+ let logger = Logger ( label: " HTTPClient " , factory: StreamLogHandler . standardOutput ( label: ) )
815+ let request = HTTPClientRequest ( url: " https://localhost: \( bin. port) /content-length-without-body " )
816+ guard let response = await XCTAssertNoThrowWithResult (
817+ try await client. execute ( request, deadline: . now( ) + . seconds( 10 ) , logger: logger)
818+ ) else { return }
819+ await XCTAssertThrowsError (
820+ try await response. body. collect ( upTo: 3 )
821+ ) {
822+ XCTAssertEqualTypeAndValue ( $0, NIOTooManyBytesError ( ) )
823+ }
813824 }
814825 }
815826}
0 commit comments