From 7620dcfa088fe86033cb63030a7d61fa9f366046 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Quenaudon?= Date: Thu, 2 Jul 2026 15:39:09 +0100 Subject: [PATCH] FieldMask: broader Swift generated-message coverage --- .../src/test/proto/field_mask_message.proto | 2 ++ wire-runtime-swift/src/test/swift/FieldMaskTests.swift | 10 ++++++++-- .../java/com/squareup/wire/swift/SwiftGeneratorTest.kt | 6 ++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/wire-runtime-swift/src/test/proto/field_mask_message.proto b/wire-runtime-swift/src/test/proto/field_mask_message.proto index 37e21f0f14..4a95604841 100644 --- a/wire-runtime-swift/src/test/proto/field_mask_message.proto +++ b/wire-runtime-swift/src/test/proto/field_mask_message.proto @@ -20,4 +20,6 @@ import "google/protobuf/field_mask.proto"; message MessageContainingFieldMask { google.protobuf.FieldMask mask = 1; + repeated google.protobuf.FieldMask masks = 2; + map masks_by_id = 3; } diff --git a/wire-runtime-swift/src/test/swift/FieldMaskTests.swift b/wire-runtime-swift/src/test/swift/FieldMaskTests.swift index 42709a21b3..b878069457 100644 --- a/wire-runtime-swift/src/test/swift/FieldMaskTests.swift +++ b/wire-runtime-swift/src/test/swift/FieldMaskTests.swift @@ -68,13 +68,19 @@ final class FieldMaskTests: XCTestCase { } func testGeneratedMessageWithFieldMask() throws { + let fieldMask = FieldMask(paths: ["user.display_name", "photo"]) + let otherFieldMask = FieldMask(paths: ["updated_at.seconds"]) let message = MessageContainingFieldMask { - $0.mask = FieldMask(paths: ["user.display_name", "photo"]) + $0.mask = fieldMask + $0.masks = [fieldMask, otherFieldMask] + $0.masks_by_id = [1: fieldMask, 2: otherFieldMask] } let data = try ProtoEncoder().encode(message) let decoded = try ProtoDecoder().decode(MessageContainingFieldMask.self, from: data) - XCTAssertEqual(decoded.mask, FieldMask(paths: ["user.display_name", "photo"])) + XCTAssertEqual(decoded.mask, fieldMask) + XCTAssertEqual(decoded.masks, [fieldMask, otherFieldMask]) + XCTAssertEqual(decoded.masks_by_id, [1: fieldMask, 2: otherFieldMask]) } } diff --git a/wire-swift-generator/src/test/java/com/squareup/wire/swift/SwiftGeneratorTest.kt b/wire-swift-generator/src/test/java/com/squareup/wire/swift/SwiftGeneratorTest.kt index fa3cbca9fe..2142b65400 100644 --- a/wire-swift-generator/src/test/java/com/squareup/wire/swift/SwiftGeneratorTest.kt +++ b/wire-swift-generator/src/test/java/com/squareup/wire/swift/SwiftGeneratorTest.kt @@ -77,6 +77,8 @@ class SwiftGeneratorTest { | |message Message { | google.protobuf.FieldMask mask = 1; + | repeated google.protobuf.FieldMask masks = 2; + | map masks_by_id = 3; |} """.trimMargin(), ) @@ -86,7 +88,11 @@ class SwiftGeneratorTest { assertThat(code).contains("import Wire") assertThat(code).contains("public var mask: FieldMask?") + assertThat(code).contains("public var masks: [FieldMask]") + assertThat(code).contains("public var masks_by_id: [Int32 : FieldMask]") assertThat(code).contains("mask = try protoReader.decode(FieldMask.self)") + assertThat(code).contains("try protoReader.decode(into: &masks)") + assertThat(code).contains("try protoReader.decode(into: &masks_by_id, keyEncoding: .variable)") assertThat(code).doesNotContain("@ProtoDefaulted") }