From 194227f589eb0d8436275577e98a6c0c7a94ebef Mon Sep 17 00:00:00 2001 From: Gus Cairo Date: Tue, 28 Jan 2025 21:50:53 +0000 Subject: [PATCH 1/7] Fix Metadata's description for prettier printing --- Sources/GRPCCore/Metadata.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/GRPCCore/Metadata.swift b/Sources/GRPCCore/Metadata.swift index dfc095e1e..65622abc2 100644 --- a/Sources/GRPCCore/Metadata.swift +++ b/Sources/GRPCCore/Metadata.swift @@ -494,7 +494,7 @@ extension Metadata.Value: ExpressibleByArrayLiteral { extension Metadata: CustomStringConvertible { public var description: String { - String(describing: self.map({ ($0.key, $0.value) })) + String(describing: self.map({ ($0.key.description, $0.value.description) })) } } @@ -502,7 +502,7 @@ extension Metadata.Value: CustomStringConvertible { public var description: String { switch self { case .string(let stringValue): - return String(describing: stringValue) + return stringValue case .binary(let binaryValue): return String(describing: binaryValue) } From ee6fbcff04166bdcc3afabd265438e79dcd0c0fe Mon Sep 17 00:00:00 2001 From: Gus Cairo Date: Wed, 29 Jan 2025 11:51:20 +0000 Subject: [PATCH 2/7] PR changes --- Sources/GRPCCore/Metadata.swift | 12 ++++++++++-- Tests/GRPCCoreTests/MetadataTests.swift | 13 +++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/Sources/GRPCCore/Metadata.swift b/Sources/GRPCCore/Metadata.swift index 65622abc2..c368451a1 100644 --- a/Sources/GRPCCore/Metadata.swift +++ b/Sources/GRPCCore/Metadata.swift @@ -494,7 +494,15 @@ extension Metadata.Value: ExpressibleByArrayLiteral { extension Metadata: CustomStringConvertible { public var description: String { - String(describing: self.map({ ($0.key.description, $0.value.description) })) + var description = "[" + description = self.dropLast().reduce(into: description) { partialResult, nextPair in + partialResult += "\"\(nextPair.key)\": \(nextPair.value), " + } + if let lastElement = self.last { + description += "\"\(lastElement.key)\": \(lastElement.value)" + } + description += "]" + return description } } @@ -502,7 +510,7 @@ extension Metadata.Value: CustomStringConvertible { public var description: String { switch self { case .string(let stringValue): - return stringValue + return "\"\(stringValue)\"" case .binary(let binaryValue): return String(describing: binaryValue) } diff --git a/Tests/GRPCCoreTests/MetadataTests.swift b/Tests/GRPCCoreTests/MetadataTests.swift index 68c3df85c..2069a92ce 100644 --- a/Tests/GRPCCoreTests/MetadataTests.swift +++ b/Tests/GRPCCoreTests/MetadataTests.swift @@ -314,4 +314,17 @@ struct MetadataTests { ) } } + + @Suite("Description") + struct Description { + @Test("Metadata") + func describeMetadata() async throws { + let metadata: Metadata = [ + "key1": "value1", + "key2": "value2", + "key-bin": .binary([1,2,3]), + ] + #expect("\(metadata)" == #"["key1": "value1", "key2": "value2", "key-bin": [1, 2, 3]]"#) + } + } } From 17a140f1faa72fb364a114ee76b095f07fcf136c Mon Sep 17 00:00:00 2001 From: Gus Cairo Date: Wed, 29 Jan 2025 11:52:57 +0000 Subject: [PATCH 3/7] Formatting --- Tests/GRPCCoreTests/MetadataTests.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/GRPCCoreTests/MetadataTests.swift b/Tests/GRPCCoreTests/MetadataTests.swift index 2069a92ce..b8ca69616 100644 --- a/Tests/GRPCCoreTests/MetadataTests.swift +++ b/Tests/GRPCCoreTests/MetadataTests.swift @@ -322,7 +322,7 @@ struct MetadataTests { let metadata: Metadata = [ "key1": "value1", "key2": "value2", - "key-bin": .binary([1,2,3]), + "key-bin": .binary([1, 2, 3]), ] #expect("\(metadata)" == #"["key1": "value1", "key2": "value2", "key-bin": [1, 2, 3]]"#) } From 782e79ff2794b98301ee5fc2561887210595aac6 Mon Sep 17 00:00:00 2001 From: Gus Cairo Date: Wed, 29 Jan 2025 15:23:27 +0000 Subject: [PATCH 4/7] PR changes --- Sources/GRPCCore/Metadata.swift | 25 +++++++++++++++++-------- Tests/GRPCCoreTests/MetadataTests.swift | 14 ++++++++++++++ 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/Sources/GRPCCore/Metadata.swift b/Sources/GRPCCore/Metadata.swift index c368451a1..c68e06413 100644 --- a/Sources/GRPCCore/Metadata.swift +++ b/Sources/GRPCCore/Metadata.swift @@ -494,20 +494,29 @@ extension Metadata.Value: ExpressibleByArrayLiteral { extension Metadata: CustomStringConvertible { public var description: String { - var description = "[" - description = self.dropLast().reduce(into: description) { partialResult, nextPair in - partialResult += "\"\(nextPair.key)\": \(nextPair.value), " + if self.isEmpty { + return "[:]" + } else { + let elements = self.map { "\(String(reflecting: $0.key)): \(String(reflecting: $0.value))"} + .joined(separator: ", ") + return "[\(elements)]" } - if let lastElement = self.last { - description += "\"\(lastElement.key)\": \(lastElement.value)" - } - description += "]" - return description } } extension Metadata.Value: CustomStringConvertible { public var description: String { + switch self { + case .string(let stringValue): + return stringValue + case .binary(let binaryValue): + return String(describing: binaryValue) + } + } +} + +extension Metadata.Value: CustomDebugStringConvertible { + public var debugDescription: String { switch self { case .string(let stringValue): return "\"\(stringValue)\"" diff --git a/Tests/GRPCCoreTests/MetadataTests.swift b/Tests/GRPCCoreTests/MetadataTests.swift index b8ca69616..c1486c711 100644 --- a/Tests/GRPCCoreTests/MetadataTests.swift +++ b/Tests/GRPCCoreTests/MetadataTests.swift @@ -324,7 +324,21 @@ struct MetadataTests { "key2": "value2", "key-bin": .binary([1, 2, 3]), ] + #expect("\(metadata)" == #"["key1": "value1", "key2": "value2", "key-bin": [1, 2, 3]]"#) + + for (key, value) in metadata { + switch key { + case "key1": + #expect("\(value)" == "value1") + case "key2": + #expect("\(value)" == "value2") + case "key-bin": + #expect("\(value)" == "[1, 2, 3]") + default: + Issue.record("Should not have reached this point") + } + } } } } From e0655c7f8ad769176ca226255cb4a1665218a70c Mon Sep 17 00:00:00 2001 From: Gus Cairo Date: Thu, 30 Jan 2025 15:03:54 +0000 Subject: [PATCH 5/7] PR changes --- Sources/GRPCCore/Metadata.swift | 6 +++--- Tests/GRPCCoreTests/MetadataTests.swift | 19 +++++++++++-------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/Sources/GRPCCore/Metadata.swift b/Sources/GRPCCore/Metadata.swift index c68e06413..b93c2fab0 100644 --- a/Sources/GRPCCore/Metadata.swift +++ b/Sources/GRPCCore/Metadata.swift @@ -508,7 +508,7 @@ extension Metadata.Value: CustomStringConvertible { public var description: String { switch self { case .string(let stringValue): - return stringValue + return String(describing: stringValue) case .binary(let binaryValue): return String(describing: binaryValue) } @@ -519,9 +519,9 @@ extension Metadata.Value: CustomDebugStringConvertible { public var debugDescription: String { switch self { case .string(let stringValue): - return "\"\(stringValue)\"" + return String(reflecting: stringValue) case .binary(let binaryValue): - return String(describing: binaryValue) + return String(reflecting: binaryValue) } } } diff --git a/Tests/GRPCCoreTests/MetadataTests.swift b/Tests/GRPCCoreTests/MetadataTests.swift index c1486c711..f6779df51 100644 --- a/Tests/GRPCCoreTests/MetadataTests.swift +++ b/Tests/GRPCCoreTests/MetadataTests.swift @@ -317,17 +317,20 @@ struct MetadataTests { @Suite("Description") struct Description { + let metadata = Metadata([ + "key1": "value1", + "key2": "value2", + "key-bin": .binary([1, 2, 3]), + ]) + @Test("Metadata") func describeMetadata() async throws { - let metadata: Metadata = [ - "key1": "value1", - "key2": "value2", - "key-bin": .binary([1, 2, 3]), - ] - - #expect("\(metadata)" == #"["key1": "value1", "key2": "value2", "key-bin": [1, 2, 3]]"#) + #expect("\(self.metadata)" == #"["key1": "value1", "key2": "value2", "key-bin": [1, 2, 3]]"#) + } - for (key, value) in metadata { + @Test("Metadata.Value") + func describeMetadataValue() async throws { + for (key, value) in self.metadata { switch key { case "key1": #expect("\(value)" == "value1") From cd26194bcbfad5f7438b40ee780c610647b63f58 Mon Sep 17 00:00:00 2001 From: Gus Cairo Date: Thu, 30 Jan 2025 15:04:24 +0000 Subject: [PATCH 6/7] Formatting --- Sources/GRPCCore/Metadata.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/GRPCCore/Metadata.swift b/Sources/GRPCCore/Metadata.swift index b93c2fab0..23218b4a1 100644 --- a/Sources/GRPCCore/Metadata.swift +++ b/Sources/GRPCCore/Metadata.swift @@ -497,7 +497,7 @@ extension Metadata: CustomStringConvertible { if self.isEmpty { return "[:]" } else { - let elements = self.map { "\(String(reflecting: $0.key)): \(String(reflecting: $0.value))"} + let elements = self.map { "\(String(reflecting: $0.key)): \(String(reflecting: $0.value))" } .joined(separator: ", ") return "[\(elements)]" } From c6424dd8d1d2a9e71cbfc14fbc0ef371f2e79379 Mon Sep 17 00:00:00 2001 From: Gus Cairo Date: Fri, 31 Jan 2025 15:04:10 +0000 Subject: [PATCH 7/7] Fix test --- Tests/GRPCCoreTests/MetadataTests.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tests/GRPCCoreTests/MetadataTests.swift b/Tests/GRPCCoreTests/MetadataTests.swift index f6779df51..617d2263d 100644 --- a/Tests/GRPCCoreTests/MetadataTests.swift +++ b/Tests/GRPCCoreTests/MetadataTests.swift @@ -317,11 +317,11 @@ struct MetadataTests { @Suite("Description") struct Description { - let metadata = Metadata([ + let metadata: Metadata = [ "key1": "value1", "key2": "value2", "key-bin": .binary([1, 2, 3]), - ]) + ] @Test("Metadata") func describeMetadata() async throws {