encoding/textpb: fix marshaling repeated group field name
In https://golang.org/cl/157821, I attempted to fix handling of group
field names but forgot about repeated group fields as I forgot to
properly update the marshaling tests as well for it.
Unmarshal logic for both repeated and non-repeated was already fixed in
that CL.
Change-Id: Icb4a00d8b169709ca12dfee272b2bd73e7585e6e
Reviewed-on: https://go-review.googlesource.com/c/157857
Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/encoding/textpb/encode.go b/encoding/textpb/encode.go
index 77606da..54f4f54 100644
--- a/encoding/textpb/encode.go
+++ b/encoding/textpb/encode.go
@@ -127,6 +127,11 @@
func (o MarshalOptions) appendField(msgFields [][2]text.Value, tname text.Value, pval pref.Value, fd pref.FieldDescriptor) ([][2]text.Value, error) {
var nerr errors.NonFatal
+ // Use type name for group field name.
+ if fd.Kind() == pref.GroupKind {
+ tname = text.ValueOf(fd.MessageType().Name())
+ }
+
if fd.Cardinality() == pref.Repeated {
// Map or repeated fields.
var items []text.Value
@@ -153,10 +158,6 @@
if !nerr.Merge(err) {
return msgFields, err
}
- // Use type name for group field name.
- if fd.Kind() == pref.GroupKind {
- tname = text.ValueOf(fd.MessageType().Name())
- }
msgFields = append(msgFields, [2]text.Value{tname, tval})
}
diff --git a/encoding/textpb/encode_test.go b/encoding/textpb/encode_test.go
index 15a5492..fe4271d 100644
--- a/encoding/textpb/encode_test.go
+++ b/encoding/textpb/encode_test.go
@@ -537,11 +537,11 @@
{},
},
},
- want: `rptgroup: {
+ want: `RptGroup: {
rpt_bool: true
rpt_bool: false
}
-rptgroup: {}
+RptGroup: {}
`,
}, {
desc: "map fields empty",