From 2d31d0c70680399d45bffdb7de620e945b2cb6bc Mon Sep 17 00:00:00 2001 From: Harvey Tuch Date: Thu, 21 Jun 2018 13:05:27 -0400 Subject: protostream_objectwriter: fix bug when Any is directly embedded in a map. This came up when trying to round-trip the JSON<->proto3 conversion for Envoy's envoy.admin.v2alpha.ConfigDump (https://github.com/envoyproxy/envoy/blob/b903c1dc984593f8e95e0569c1503dc5d85fbe34/api/envoy/admin/v2alpha/config_dump.proto#L29). Validated fix on the Envoy code base and via the provided unit test. Signed-off-by: Harvey Tuch --- .../util/internal/protostream_objectwriter_test.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/google/protobuf/util/internal/protostream_objectwriter_test.cc') diff --git a/src/google/protobuf/util/internal/protostream_objectwriter_test.cc b/src/google/protobuf/util/internal/protostream_objectwriter_test.cc index 7f0df567..9c50e7dd 100644 --- a/src/google/protobuf/util/internal/protostream_objectwriter_test.cc +++ b/src/google/protobuf/util/internal/protostream_objectwriter_test.cc @@ -1679,6 +1679,22 @@ TEST_P(ProtoStreamObjectWriterMapTest, RepeatedMapKeyTest) { ->EndObject(); } +TEST_P(ProtoStreamObjectWriterMapTest, AnyInMap) { + MapIn mm; + google::protobuf::DoubleValue d; + d.set_value(40.2); + (*mm.mutable_map_any())["foo"].PackFrom(d); + ow_->StartObject("") + ->StartObject("map_any") + ->StartObject("foo") + ->RenderString("@type", "type.googleapis.com/google.protobuf.DoubleValue") + ->RenderDouble("value", 40.2) + ->EndObject() + ->EndObject() + ->EndObject(); + CheckOutput(mm); +} + class ProtoStreamObjectWriterAnyTest : public BaseProtoStreamObjectWriterTest { protected: ProtoStreamObjectWriterAnyTest() { -- cgit v1.2.3