From 51a1f609101038a3112ff42e5d1ad88c86844ea8 Mon Sep 17 00:00:00 2001 From: Tibor Bodecs Date: Mon, 23 Oct 2023 14:57:22 +0200 Subject: [PATCH 1/9] fix utf8 http body issue with strings --- Sources/OpenAPIRuntime/Interface/HTTPBody.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/OpenAPIRuntime/Interface/HTTPBody.swift b/Sources/OpenAPIRuntime/Interface/HTTPBody.swift index c050450e..914e7d4d 100644 --- a/Sources/OpenAPIRuntime/Interface/HTTPBody.swift +++ b/Sources/OpenAPIRuntime/Interface/HTTPBody.swift @@ -544,7 +544,7 @@ extension HTTPBody { ) { self.init( ByteChunk(string), - length: .known(string.count) + length: .known(string.utf8.count) ) } From 93cb61e2e9d8c23e90aec73f03136411afad007c Mon Sep 17 00:00:00 2001 From: Tibor Bodecs Date: Mon, 23 Oct 2023 15:05:38 +0200 Subject: [PATCH 2/9] equatable httpbody length, utf8 length tests --- Sources/OpenAPIRuntime/Interface/HTTPBody.swift | 2 +- Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Sources/OpenAPIRuntime/Interface/HTTPBody.swift b/Sources/OpenAPIRuntime/Interface/HTTPBody.swift index 914e7d4d..9ae2a76c 100644 --- a/Sources/OpenAPIRuntime/Interface/HTTPBody.swift +++ b/Sources/OpenAPIRuntime/Interface/HTTPBody.swift @@ -142,7 +142,7 @@ public final class HTTPBody: @unchecked Sendable { public let iterationBehavior: IterationBehavior /// Describes the total length of the body, if known. - public enum Length: Sendable { + public enum Length: Sendable, Equatable { /// Total length not known yet. case unknown diff --git a/Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift b/Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift index 83fbe182..cee72ad2 100644 --- a/Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift +++ b/Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift @@ -184,6 +184,13 @@ final class Test_Body: Test_Runtime { } XCTAssertEqual(chunks, ["hel", "lo"].map { Array($0.utf8)[...] }) } + + func testUTF8String() async throws { + XCTAssertTrue(HTTPBody("abc").length == .known(3)) + XCTAssertTrue(HTTPBody("🤘").length == .known(4)) + XCTAssertTrue(HTTPBody("\u{1f603}").length == .known(4)) + XCTAssertTrue(HTTPBody("árvíztűrő tükörfúrógép").length == .known(31)) + } func testIterationBehavior_single() async throws { let sequence = AsyncStream( From f9520a5c7dbd2d2233c3b5eb50a15e31a1fc78fa Mon Sep 17 00:00:00 2001 From: Tibor Bodecs Date: Mon, 23 Oct 2023 15:13:17 +0200 Subject: [PATCH 3/9] simplify length calculation --- Sources/OpenAPIRuntime/Interface/HTTPBody.swift | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Sources/OpenAPIRuntime/Interface/HTTPBody.swift b/Sources/OpenAPIRuntime/Interface/HTTPBody.swift index 9ae2a76c..cb7e53f1 100644 --- a/Sources/OpenAPIRuntime/Interface/HTTPBody.swift +++ b/Sources/OpenAPIRuntime/Interface/HTTPBody.swift @@ -542,10 +542,7 @@ extension HTTPBody { @inlinable public convenience init( _ string: some StringProtocol & Sendable ) { - self.init( - ByteChunk(string), - length: .known(string.utf8.count) - ) + self.init(ByteChunk(string)) } /// Creates a new body with the provided async throwing stream of strings. From 2415b997192bbad8b80ba93ed8fd39c9e33063df Mon Sep 17 00:00:00 2001 From: Tibor Bodecs Date: Mon, 23 Oct 2023 15:17:33 +0200 Subject: [PATCH 4/9] assert equal instead of true --- Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift b/Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift index cee72ad2..74547757 100644 --- a/Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift +++ b/Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift @@ -186,10 +186,10 @@ final class Test_Body: Test_Runtime { } func testUTF8String() async throws { - XCTAssertTrue(HTTPBody("abc").length == .known(3)) - XCTAssertTrue(HTTPBody("🤘").length == .known(4)) - XCTAssertTrue(HTTPBody("\u{1f603}").length == .known(4)) - XCTAssertTrue(HTTPBody("árvíztűrő tükörfúrógép").length == .known(31)) + XCTAssertEqual(HTTPBody("abc").length, .known(3)) + XCTAssertEqual(HTTPBody("🤘").length, .known(4)) + XCTAssertEqual(HTTPBody("\u{1f603}").length, .known(4)) + XCTAssertEqual(HTTPBody("árvíztűrő tükörfúrógép").length, .known(31)) } func testIterationBehavior_single() async throws { From 37174c6ea6b1a9a6026a62211dd1baba58c1e2f0 Mon Sep 17 00:00:00 2001 From: Tibor Bodecs Date: Mon, 23 Oct 2023 15:32:55 +0200 Subject: [PATCH 5/9] apply soundness & format --- Sources/OpenAPIRuntime/Conversion/ParameterStyles.swift | 1 + Tests/OpenAPIRuntimeTests/Base/Test_OpenAPIValue.swift | 2 +- Tests/OpenAPIRuntimeTests/Deprecated/Test_Deprecated.swift | 2 +- Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift | 4 ++-- .../OpenAPIRuntimeTests/Interface/Test_UniversalServer.swift | 2 +- Tests/OpenAPIRuntimeTests/Test_Runtime.swift | 1 + .../URICoder/Test_URICodingRoundtrip.swift | 2 +- 7 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Sources/OpenAPIRuntime/Conversion/ParameterStyles.swift b/Sources/OpenAPIRuntime/Conversion/ParameterStyles.swift index 5a833cba..09a90e48 100644 --- a/Sources/OpenAPIRuntime/Conversion/ParameterStyles.swift +++ b/Sources/OpenAPIRuntime/Conversion/ParameterStyles.swift @@ -45,6 +45,7 @@ extension ParameterStyle { /// Returns the default value of the explode field for the given style /// - Parameter style: The parameter style. + /// - Returns: Bool - True if the style is form, otherwise false static func defaultExplodeFor(forStyle style: ParameterStyle) -> Bool { style == .form } diff --git a/Tests/OpenAPIRuntimeTests/Base/Test_OpenAPIValue.swift b/Tests/OpenAPIRuntimeTests/Base/Test_OpenAPIValue.swift index e513e26e..5549e88a 100644 --- a/Tests/OpenAPIRuntimeTests/Base/Test_OpenAPIValue.swift +++ b/Tests/OpenAPIRuntimeTests/Base/Test_OpenAPIValue.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// import XCTest -@_spi(Generated)@testable import OpenAPIRuntime +@_spi(Generated) @testable import OpenAPIRuntime final class Test_OpenAPIValue: Test_Runtime { diff --git a/Tests/OpenAPIRuntimeTests/Deprecated/Test_Deprecated.swift b/Tests/OpenAPIRuntimeTests/Deprecated/Test_Deprecated.swift index 8c030ccc..73df4445 100644 --- a/Tests/OpenAPIRuntimeTests/Deprecated/Test_Deprecated.swift +++ b/Tests/OpenAPIRuntimeTests/Deprecated/Test_Deprecated.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// import XCTest -@_spi(Generated)@testable import OpenAPIRuntime +@_spi(Generated) @testable import OpenAPIRuntime final class Test_Deprecated: Test_Runtime { // Tests for deprecated code goes here. diff --git a/Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift b/Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift index 74547757..bc6cc623 100644 --- a/Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift +++ b/Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// import XCTest -@_spi(Generated)@testable import OpenAPIRuntime +@_spi(Generated) @testable import OpenAPIRuntime import Foundation final class Test_Body: Test_Runtime { @@ -184,7 +184,7 @@ final class Test_Body: Test_Runtime { } XCTAssertEqual(chunks, ["hel", "lo"].map { Array($0.utf8)[...] }) } - + func testUTF8String() async throws { XCTAssertEqual(HTTPBody("abc").length, .known(3)) XCTAssertEqual(HTTPBody("🤘").length, .known(4)) diff --git a/Tests/OpenAPIRuntimeTests/Interface/Test_UniversalServer.swift b/Tests/OpenAPIRuntimeTests/Interface/Test_UniversalServer.swift index b3992464..61ef88f3 100644 --- a/Tests/OpenAPIRuntimeTests/Interface/Test_UniversalServer.swift +++ b/Tests/OpenAPIRuntimeTests/Interface/Test_UniversalServer.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// import XCTest -@_spi(Generated)@testable import OpenAPIRuntime +@_spi(Generated) @testable import OpenAPIRuntime final class Test_UniversalServer: Test_Runtime { diff --git a/Tests/OpenAPIRuntimeTests/Test_Runtime.swift b/Tests/OpenAPIRuntimeTests/Test_Runtime.swift index 2d6756a4..ba003917 100644 --- a/Tests/OpenAPIRuntimeTests/Test_Runtime.swift +++ b/Tests/OpenAPIRuntimeTests/Test_Runtime.swift @@ -18,6 +18,7 @@ import HTTPTypes class Test_Runtime: XCTestCase { + /// setUp tests override func setUp() async throws { try await super.setUp() continueAfterFailure = false diff --git a/Tests/OpenAPIRuntimeTests/URICoder/Test_URICodingRoundtrip.swift b/Tests/OpenAPIRuntimeTests/URICoder/Test_URICodingRoundtrip.swift index 11ef8705..fcce3775 100644 --- a/Tests/OpenAPIRuntimeTests/URICoder/Test_URICodingRoundtrip.swift +++ b/Tests/OpenAPIRuntimeTests/URICoder/Test_URICodingRoundtrip.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// import XCTest -@_spi(Generated)@testable import OpenAPIRuntime +@_spi(Generated) @testable import OpenAPIRuntime #if os(Linux) @preconcurrency import Foundation #endif From 57b7e4c6041d24e3d0fdc039cf5d5c4448f5b332 Mon Sep 17 00:00:00 2001 From: Tibor Bodecs Date: Mon, 23 Oct 2023 15:37:46 +0200 Subject: [PATCH 6/9] fix doc comment --- Sources/OpenAPIRuntime/Conversion/ParameterStyles.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/OpenAPIRuntime/Conversion/ParameterStyles.swift b/Sources/OpenAPIRuntime/Conversion/ParameterStyles.swift index 09a90e48..9e11172d 100644 --- a/Sources/OpenAPIRuntime/Conversion/ParameterStyles.swift +++ b/Sources/OpenAPIRuntime/Conversion/ParameterStyles.swift @@ -45,7 +45,7 @@ extension ParameterStyle { /// Returns the default value of the explode field for the given style /// - Parameter style: The parameter style. - /// - Returns: Bool - True if the style is form, otherwise false + /// - Returns: `true` if the style is form, otherwise `false`. static func defaultExplodeFor(forStyle style: ParameterStyle) -> Bool { style == .form } From 7d6fd75a17ffd23d39d3f3a48536a0e85e0518f2 Mon Sep 17 00:00:00 2001 From: Tibor Bodecs Date: Mon, 23 Oct 2023 15:58:43 +0200 Subject: [PATCH 7/9] apply swift format 5.8 --- Tests/OpenAPIRuntimeTests/Base/Test_OpenAPIValue.swift | 2 +- Tests/OpenAPIRuntimeTests/Deprecated/Test_Deprecated.swift | 2 +- Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift | 2 +- Tests/OpenAPIRuntimeTests/Interface/Test_UniversalServer.swift | 2 +- .../OpenAPIRuntimeTests/URICoder/Test_URICodingRoundtrip.swift | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Tests/OpenAPIRuntimeTests/Base/Test_OpenAPIValue.swift b/Tests/OpenAPIRuntimeTests/Base/Test_OpenAPIValue.swift index 5549e88a..e513e26e 100644 --- a/Tests/OpenAPIRuntimeTests/Base/Test_OpenAPIValue.swift +++ b/Tests/OpenAPIRuntimeTests/Base/Test_OpenAPIValue.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// import XCTest -@_spi(Generated) @testable import OpenAPIRuntime +@_spi(Generated)@testable import OpenAPIRuntime final class Test_OpenAPIValue: Test_Runtime { diff --git a/Tests/OpenAPIRuntimeTests/Deprecated/Test_Deprecated.swift b/Tests/OpenAPIRuntimeTests/Deprecated/Test_Deprecated.swift index 73df4445..8c030ccc 100644 --- a/Tests/OpenAPIRuntimeTests/Deprecated/Test_Deprecated.swift +++ b/Tests/OpenAPIRuntimeTests/Deprecated/Test_Deprecated.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// import XCTest -@_spi(Generated) @testable import OpenAPIRuntime +@_spi(Generated)@testable import OpenAPIRuntime final class Test_Deprecated: Test_Runtime { // Tests for deprecated code goes here. diff --git a/Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift b/Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift index bc6cc623..ae7b97d3 100644 --- a/Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift +++ b/Tests/OpenAPIRuntimeTests/Interface/Test_HTTPBody.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// import XCTest -@_spi(Generated) @testable import OpenAPIRuntime +@_spi(Generated)@testable import OpenAPIRuntime import Foundation final class Test_Body: Test_Runtime { diff --git a/Tests/OpenAPIRuntimeTests/Interface/Test_UniversalServer.swift b/Tests/OpenAPIRuntimeTests/Interface/Test_UniversalServer.swift index 61ef88f3..b3992464 100644 --- a/Tests/OpenAPIRuntimeTests/Interface/Test_UniversalServer.swift +++ b/Tests/OpenAPIRuntimeTests/Interface/Test_UniversalServer.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// import XCTest -@_spi(Generated) @testable import OpenAPIRuntime +@_spi(Generated)@testable import OpenAPIRuntime final class Test_UniversalServer: Test_Runtime { diff --git a/Tests/OpenAPIRuntimeTests/URICoder/Test_URICodingRoundtrip.swift b/Tests/OpenAPIRuntimeTests/URICoder/Test_URICodingRoundtrip.swift index fcce3775..11ef8705 100644 --- a/Tests/OpenAPIRuntimeTests/URICoder/Test_URICodingRoundtrip.swift +++ b/Tests/OpenAPIRuntimeTests/URICoder/Test_URICodingRoundtrip.swift @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// import XCTest -@_spi(Generated) @testable import OpenAPIRuntime +@_spi(Generated)@testable import OpenAPIRuntime #if os(Linux) @preconcurrency import Foundation #endif From d2209942bdd21566a63db466b28eeebc31ab1d6e Mon Sep 17 00:00:00 2001 From: Tibor Bodecs Date: Mon, 23 Oct 2023 16:44:46 +0200 Subject: [PATCH 8/9] remove unnecessary comment --- Tests/OpenAPIRuntimeTests/Test_Runtime.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/Tests/OpenAPIRuntimeTests/Test_Runtime.swift b/Tests/OpenAPIRuntimeTests/Test_Runtime.swift index ba003917..2d6756a4 100644 --- a/Tests/OpenAPIRuntimeTests/Test_Runtime.swift +++ b/Tests/OpenAPIRuntimeTests/Test_Runtime.swift @@ -18,7 +18,6 @@ import HTTPTypes class Test_Runtime: XCTestCase { - /// setUp tests override func setUp() async throws { try await super.setUp() continueAfterFailure = false From 54b191ae9453fe5910d6adf280cb04383868846f Mon Sep 17 00:00:00 2001 From: Tibor Bodecs Date: Mon, 23 Oct 2023 17:08:39 +0200 Subject: [PATCH 9/9] remove return doc --- Sources/OpenAPIRuntime/Conversion/ParameterStyles.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/Sources/OpenAPIRuntime/Conversion/ParameterStyles.swift b/Sources/OpenAPIRuntime/Conversion/ParameterStyles.swift index 9e11172d..5a833cba 100644 --- a/Sources/OpenAPIRuntime/Conversion/ParameterStyles.swift +++ b/Sources/OpenAPIRuntime/Conversion/ParameterStyles.swift @@ -45,7 +45,6 @@ extension ParameterStyle { /// Returns the default value of the explode field for the given style /// - Parameter style: The parameter style. - /// - Returns: `true` if the style is form, otherwise `false`. static func defaultExplodeFor(forStyle style: ParameterStyle) -> Bool { style == .form }