diff options
author | Harvey Tuch <htuch@google.com> | 2018-06-21 13:05:27 -0400 |
---|---|---|
committer | Harvey Tuch <htuch@google.com> | 2018-06-21 15:24:50 -0400 |
commit | 2d31d0c70680399d45bffdb7de620e945b2cb6bc (patch) | |
tree | 82c2ba222d8260e545b707e36d3f7984cda5e837 /src/google/protobuf/util/internal/protostream_objectwriter_test.cc | |
parent | 761a6275d4b7089db50dda22eb4241ba7f923769 (diff) |
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 <htuch@google.com>
Diffstat (limited to 'src/google/protobuf/util/internal/protostream_objectwriter_test.cc')
-rw-r--r-- | src/google/protobuf/util/internal/protostream_objectwriter_test.cc | 16 |
1 files changed, 16 insertions, 0 deletions
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() { |