mirror of
https://github.com/protocolbuffers/protobuf
synced 2026-08-26 02:23:14 -04:00
Migrate upb_MessageUnknown calls in upb tests to use upb_Message_NextUnknown2.
PiperOrigin-RevId: 962412486
This commit is contained in:
parent
7023abcb48
commit
86dfa627be
8 changed files with 86 additions and 55 deletions
|
|
@ -75,7 +75,9 @@ cc_library(
|
|||
"//third_party/cel/c/internal:__pkg__",
|
||||
"//third_party/upb/wasm_abi/upb:__pkg__",
|
||||
"//upb:__pkg__",
|
||||
"//upb/test:__pkg__",
|
||||
"//upb/wire:__pkg__",
|
||||
"//upb/wire/decode_fast:__pkg__",
|
||||
"//video/youtube/utils/elements/client/component_type:__pkg__",
|
||||
"//video/youtube/utils/elements/client/component_type/subscription_processors:__pkg__",
|
||||
"//video/youtube/utils/elements/data_layer:__pkg__",
|
||||
|
|
|
|||
|
|
@ -378,10 +378,12 @@ TEST(GeneratedCode, DeepCloneMessageWithUnknowns) {
|
|||
upb_Arena_Free(encode_arena);
|
||||
// Read unknown data from clone and verify.
|
||||
std::string cloned_unknown_data;
|
||||
upb_StringView unknown;
|
||||
upb_MessageUnknown unknown;
|
||||
uintptr_t iter = kUpb_Message_UnknownBegin;
|
||||
while (upb_Message_NextUnknown(UPB_UPCAST(clone), &unknown, &iter)) {
|
||||
cloned_unknown_data.append(unknown.data, unknown.size);
|
||||
while (upb_Message_NextUnknown2(UPB_UPCAST(clone), &unknown, &iter)) {
|
||||
ASSERT_EQ(unknown.type, kUpb_MessageUnknownType_StringView);
|
||||
cloned_unknown_data.append(unknown.value.bytes.data,
|
||||
unknown.value.bytes.size);
|
||||
}
|
||||
EXPECT_EQ(unknown_data, cloned_unknown_data);
|
||||
upb_Arena_Free(clone_arena);
|
||||
|
|
@ -532,10 +534,12 @@ TEST(GeneratedCode, DeepCloneHandlesClearedExtensions) {
|
|||
|
||||
std::vector<std::string_view> GetUnknownFields(const upb_Message* msg) {
|
||||
std::vector<std::string_view> result;
|
||||
upb_StringView data;
|
||||
upb_MessageUnknown data;
|
||||
uintptr_t iter = kUpb_Message_UnknownBegin;
|
||||
while (upb_Message_NextUnknown(msg, &data, &iter)) {
|
||||
result.push_back(std::string_view(data.data, data.size));
|
||||
while (upb_Message_NextUnknown2(msg, &data, &iter)) {
|
||||
EXPECT_EQ(data.type, kUpb_MessageUnknownType_StringView);
|
||||
result.push_back(
|
||||
std::string_view(data.value.bytes.data, data.value.bytes.size));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
@ -566,12 +570,14 @@ TEST(GeneratedCode, ShallowCopyIncludesUnknowns) {
|
|||
|
||||
// Modify the unknown data view in dst to ensure it's a separate view.
|
||||
// Use upb_Message_DeleteUnknown to delete a trailing part.
|
||||
upb_StringView dst_data;
|
||||
upb_MessageUnknown dst_unknown;
|
||||
uintptr_t iter = kUpb_Message_UnknownBegin;
|
||||
EXPECT_TRUE(upb_Message_NextUnknown(UPB_UPCAST(dst), &dst_data, &iter));
|
||||
EXPECT_TRUE(upb_Message_NextUnknown2(UPB_UPCAST(dst), &dst_unknown, &iter));
|
||||
ASSERT_EQ(dst_unknown.type, kUpb_MessageUnknownType_StringView);
|
||||
upb_StringView to_delete;
|
||||
to_delete.size = 1;
|
||||
to_delete.data = dst_data.data + dst_data.size - to_delete.size;
|
||||
to_delete.data = dst_unknown.value.bytes.data + dst_unknown.value.bytes.size -
|
||||
to_delete.size;
|
||||
upb_Message_DeleteUnknownStatus status =
|
||||
upb_Message_DeleteUnknown(UPB_UPCAST(dst), &to_delete, &iter, arena);
|
||||
EXPECT_EQ(status, kUpb_DeleteUnknown_DeletedLast);
|
||||
|
|
|
|||
|
|
@ -790,11 +790,12 @@ TEST(MessageTest, AdjacentAliasedUnknown) {
|
|||
kUpb_DecodeOption_AliasString, arena.ptr());
|
||||
ASSERT_EQ(status, kUpb_DecodeStatus_Ok);
|
||||
uintptr_t iter = kUpb_Message_UnknownBegin;
|
||||
upb_StringView data;
|
||||
ASSERT_TRUE(upb_Message_NextUnknown(msg, &data, &iter));
|
||||
EXPECT_EQ(region, data.data);
|
||||
EXPECT_EQ(sizeof(region), data.size);
|
||||
EXPECT_FALSE(upb_Message_NextUnknown(msg, &data, &iter));
|
||||
upb_MessageUnknown data;
|
||||
ASSERT_TRUE(upb_Message_NextUnknown2(msg, &data, &iter));
|
||||
ASSERT_EQ(data.type, kUpb_MessageUnknownType_StringView);
|
||||
EXPECT_EQ(region, data.value.bytes.data);
|
||||
EXPECT_EQ(sizeof(region), data.value.bytes.size);
|
||||
EXPECT_FALSE(upb_Message_NextUnknown2(msg, &data, &iter));
|
||||
}
|
||||
|
||||
upb_Message_Clear(msg, table);
|
||||
|
|
@ -811,18 +812,21 @@ TEST(MessageTest, AdjacentAliasedUnknown) {
|
|||
EXPECT_EQ(kUpb_DecodeStatus_Ok,
|
||||
upb_Decode(region + 600, 300, msg, table, nullptr,
|
||||
kUpb_DecodeOption_AliasString, arena.ptr()));
|
||||
upb_StringView data;
|
||||
upb_MessageUnknown data;
|
||||
uintptr_t iter = kUpb_Message_UnknownBegin;
|
||||
ASSERT_TRUE(upb_Message_NextUnknown(msg, &data, &iter));
|
||||
EXPECT_EQ(region, data.data);
|
||||
EXPECT_EQ(300u, data.size);
|
||||
ASSERT_TRUE(upb_Message_NextUnknown(msg, &data, &iter));
|
||||
EXPECT_EQ(region + 300, data.data);
|
||||
EXPECT_EQ(300u, data.size);
|
||||
ASSERT_TRUE(upb_Message_NextUnknown(msg, &data, &iter));
|
||||
EXPECT_EQ(region + 600, data.data);
|
||||
EXPECT_EQ(300u, data.size);
|
||||
ASSERT_FALSE(upb_Message_NextUnknown(msg, &data, &iter));
|
||||
ASSERT_TRUE(upb_Message_NextUnknown2(msg, &data, &iter));
|
||||
ASSERT_EQ(data.type, kUpb_MessageUnknownType_StringView);
|
||||
EXPECT_EQ(region, data.value.bytes.data);
|
||||
EXPECT_EQ(300u, data.value.bytes.size);
|
||||
ASSERT_TRUE(upb_Message_NextUnknown2(msg, &data, &iter));
|
||||
ASSERT_EQ(data.type, kUpb_MessageUnknownType_StringView);
|
||||
EXPECT_EQ(region + 300, data.value.bytes.data);
|
||||
EXPECT_EQ(300u, data.value.bytes.size);
|
||||
ASSERT_TRUE(upb_Message_NextUnknown2(msg, &data, &iter));
|
||||
ASSERT_EQ(data.type, kUpb_MessageUnknownType_StringView);
|
||||
EXPECT_EQ(region + 600, data.value.bytes.data);
|
||||
EXPECT_EQ(300u, data.value.bytes.size);
|
||||
ASSERT_FALSE(upb_Message_NextUnknown2(msg, &data, &iter));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -237,6 +237,7 @@ cc_test(
|
|||
"//upb/base",
|
||||
"//upb/mem",
|
||||
"//upb/message",
|
||||
"//upb/message:message_unknowns",
|
||||
"//upb/mini_table",
|
||||
"//upb/port",
|
||||
"//upb/reflection",
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
#include "upb/base/upcast.h"
|
||||
#include "upb/mem/arena.hpp"
|
||||
#include "upb/message/message.h"
|
||||
#include "upb/message/unknown_fields.h"
|
||||
#include "upb/port/def.inc"
|
||||
#include "upb/reflection/def.hpp"
|
||||
#include "upb/reflection/descriptor_bootstrap.h"
|
||||
|
|
@ -73,13 +74,14 @@ TEST(EditionsTest, ImportOptionUnlinked) {
|
|||
upb::MessageDefPtr md(upb_test_2023_EditionsMessage_getmsgdef(defpool.ptr()));
|
||||
const google_protobuf_MessageOptions* options = md.options();
|
||||
|
||||
upb_StringView data;
|
||||
upb_MessageUnknown data;
|
||||
uintptr_t iter = kUpb_Message_UnknownBegin;
|
||||
ASSERT_TRUE(upb_Message_NextUnknown(UPB_UPCAST(options), &data, &iter));
|
||||
EXPECT_EQ(std::string(data.data, data.size),
|
||||
ASSERT_TRUE(upb_Message_NextUnknown2(UPB_UPCAST(options), &data, &iter));
|
||||
ASSERT_EQ(data.type, kUpb_MessageUnknownType_StringView);
|
||||
EXPECT_EQ(std::string(data.value.bytes.data, data.value.bytes.size),
|
||||
// 7739037: 9
|
||||
"\xE8\xE9\xC2\x1D\011");
|
||||
EXPECT_FALSE(upb_Message_NextUnknown(UPB_UPCAST(options), &data, &iter));
|
||||
EXPECT_FALSE(upb_Message_NextUnknown2(UPB_UPCAST(options), &data, &iter));
|
||||
}
|
||||
|
||||
TEST(EditionsTest, ImportOptionLinked) {
|
||||
|
|
|
|||
|
|
@ -206,6 +206,7 @@ cc_test(
|
|||
"//upb/base",
|
||||
"//upb/mem",
|
||||
"//upb/message",
|
||||
"//upb/message:message_unknowns",
|
||||
"//upb/mini_descriptor",
|
||||
"//upb/mini_descriptor:internal",
|
||||
"//upb/mini_table",
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
#include "upb/mem/arena.hpp"
|
||||
#include "upb/message/accessors.h"
|
||||
#include "upb/message/message.h"
|
||||
#include "upb/message/unknown_fields.h"
|
||||
#include "upb/mini_descriptor/decode.h"
|
||||
#include "upb/mini_descriptor/internal/encode.hpp"
|
||||
#include "upb/mini_descriptor/link.h"
|
||||
|
|
@ -88,10 +89,12 @@ TEST_P(UnknownFieldTest, UnknownFieldFastPath) {
|
|||
|
||||
// Verify the contents of the unknown field.
|
||||
uintptr_t iter = kUpb_Message_UnknownBegin;
|
||||
upb_StringView unknown_data;
|
||||
upb_MessageUnknown unknown_data;
|
||||
std::string captured_unknown;
|
||||
while (upb_Message_NextUnknown(msg, &unknown_data, &iter)) {
|
||||
captured_unknown.append(unknown_data.data, unknown_data.size);
|
||||
while (upb_Message_NextUnknown2(msg, &unknown_data, &iter)) {
|
||||
ASSERT_EQ(unknown_data.type, kUpb_MessageUnknownType_StringView);
|
||||
captured_unknown.append(unknown_data.value.bytes.data,
|
||||
unknown_data.value.bytes.size);
|
||||
}
|
||||
EXPECT_EQ(captured_unknown, payload);
|
||||
|
||||
|
|
@ -206,9 +209,11 @@ TEST(UnknownFieldSpecialTest, UnknownVarintFollowedByEndGroupInGroup) {
|
|||
// Verify contents.
|
||||
std::string captured_unknown;
|
||||
uintptr_t iter = kUpb_Message_UnknownBegin;
|
||||
upb_StringView unknown_data;
|
||||
while (upb_Message_NextUnknown(child_msg, &unknown_data, &iter)) {
|
||||
captured_unknown.append(unknown_data.data, unknown_data.size);
|
||||
upb_MessageUnknown unknown_data;
|
||||
while (upb_Message_NextUnknown2(child_msg, &unknown_data, &iter)) {
|
||||
ASSERT_EQ(unknown_data.type, kUpb_MessageUnknownType_StringView);
|
||||
captured_unknown.append(unknown_data.value.bytes.data,
|
||||
unknown_data.value.bytes.size);
|
||||
}
|
||||
|
||||
// The captured unknown should be just the varint part.
|
||||
|
|
|
|||
|
|
@ -483,10 +483,12 @@ TEST(DecodeTest, EmptyMiniTableDecodedAsUnknown) {
|
|||
EXPECT_TRUE(upb_Message_HasUnknown(msg));
|
||||
|
||||
uintptr_t iter = kUpb_Message_UnknownBegin;
|
||||
upb_StringView data;
|
||||
ASSERT_TRUE(upb_Message_NextUnknown(msg, &data, &iter));
|
||||
EXPECT_EQ(absl::string_view(data.data, data.size), payload);
|
||||
EXPECT_FALSE(upb_Message_NextUnknown(msg, &data, &iter));
|
||||
upb_MessageUnknown data;
|
||||
ASSERT_TRUE(upb_Message_NextUnknown2(msg, &data, &iter));
|
||||
ASSERT_EQ(data.type, kUpb_MessageUnknownType_StringView);
|
||||
EXPECT_EQ(absl::string_view(data.value.bytes.data, data.value.bytes.size),
|
||||
payload);
|
||||
EXPECT_FALSE(upb_Message_NextUnknown2(msg, &data, &iter));
|
||||
}
|
||||
|
||||
TEST(DecodeTest, ConsecutiveUnknownFieldsWithoutAlias) {
|
||||
|
|
@ -514,12 +516,14 @@ TEST(DecodeTest, ConsecutiveUnknownFieldsWithoutAlias) {
|
|||
EXPECT_TRUE(upb_Message_HasUnknown(msg));
|
||||
|
||||
uintptr_t iter = kUpb_Message_UnknownBegin;
|
||||
upb_StringView data;
|
||||
upb_MessageUnknown data;
|
||||
|
||||
// We expect them to be merged.
|
||||
ASSERT_TRUE(upb_Message_NextUnknown(msg, &data, &iter));
|
||||
EXPECT_EQ(absl::string_view(data.data, data.size), payload);
|
||||
EXPECT_FALSE(upb_Message_NextUnknown(msg, &data, &iter));
|
||||
ASSERT_TRUE(upb_Message_NextUnknown2(msg, &data, &iter));
|
||||
ASSERT_EQ(data.type, kUpb_MessageUnknownType_StringView);
|
||||
EXPECT_EQ(absl::string_view(data.value.bytes.data, data.value.bytes.size),
|
||||
payload);
|
||||
EXPECT_FALSE(upb_Message_NextUnknown2(msg, &data, &iter));
|
||||
|
||||
#ifndef NDEBUG
|
||||
// Assert that consecutive unknown fields optimization took effect, decoding
|
||||
|
|
@ -556,11 +560,13 @@ TEST(DecodeTest, ConsecutiveUnknownFieldsWithAlias) {
|
|||
EXPECT_TRUE(upb_Message_HasUnknown(msg));
|
||||
|
||||
uintptr_t iter = kUpb_Message_UnknownBegin;
|
||||
upb_StringView data;
|
||||
upb_MessageUnknown data;
|
||||
|
||||
ASSERT_TRUE(upb_Message_NextUnknown(msg, &data, &iter));
|
||||
EXPECT_EQ(absl::string_view(data.data, data.size), payload);
|
||||
EXPECT_FALSE(upb_Message_NextUnknown(msg, &data, &iter));
|
||||
ASSERT_TRUE(upb_Message_NextUnknown2(msg, &data, &iter));
|
||||
ASSERT_EQ(data.type, kUpb_MessageUnknownType_StringView);
|
||||
EXPECT_EQ(absl::string_view(data.value.bytes.data, data.value.bytes.size),
|
||||
payload);
|
||||
EXPECT_FALSE(upb_Message_NextUnknown2(msg, &data, &iter));
|
||||
|
||||
#ifndef NDEBUG
|
||||
EXPECT_EQ(absl::string_view(trace_buf),
|
||||
|
|
@ -782,10 +788,12 @@ TEST(DecodeTest, DecodeGroupFieldFromDelimitedWireFormatAsUnknown) {
|
|||
EXPECT_TRUE(upb_Message_HasUnknown(parent_msg));
|
||||
|
||||
uintptr_t iter = kUpb_Message_UnknownBegin;
|
||||
upb_StringView data;
|
||||
ASSERT_TRUE(upb_Message_NextUnknown(parent_msg, &data, &iter));
|
||||
EXPECT_EQ(absl::string_view(data.data, data.size), payload);
|
||||
EXPECT_FALSE(upb_Message_NextUnknown(parent_msg, &data, &iter));
|
||||
upb_MessageUnknown data;
|
||||
ASSERT_TRUE(upb_Message_NextUnknown2(parent_msg, &data, &iter));
|
||||
ASSERT_EQ(data.type, kUpb_MessageUnknownType_StringView);
|
||||
EXPECT_EQ(absl::string_view(data.value.bytes.data, data.value.bytes.size),
|
||||
payload);
|
||||
EXPECT_FALSE(upb_Message_NextUnknown2(parent_msg, &data, &iter));
|
||||
}
|
||||
|
||||
TEST(DecodeTest, ConsecutiveUnknownFieldsWithGroup) {
|
||||
|
|
@ -815,12 +823,14 @@ TEST(DecodeTest, ConsecutiveUnknownFieldsWithGroup) {
|
|||
EXPECT_TRUE(upb_Message_HasUnknown(msg));
|
||||
|
||||
uintptr_t iter = kUpb_Message_UnknownBegin;
|
||||
upb_StringView data;
|
||||
upb_MessageUnknown data;
|
||||
|
||||
// We expect them to be merged.
|
||||
ASSERT_TRUE(upb_Message_NextUnknown(msg, &data, &iter));
|
||||
EXPECT_EQ(absl::string_view(data.data, data.size), payload);
|
||||
EXPECT_FALSE(upb_Message_NextUnknown(msg, &data, &iter));
|
||||
ASSERT_TRUE(upb_Message_NextUnknown2(msg, &data, &iter));
|
||||
ASSERT_EQ(data.type, kUpb_MessageUnknownType_StringView);
|
||||
EXPECT_EQ(absl::string_view(data.value.bytes.data, data.value.bytes.size),
|
||||
payload);
|
||||
EXPECT_FALSE(upb_Message_NextUnknown2(msg, &data, &iter));
|
||||
|
||||
#ifndef NDEBUG
|
||||
const char* expected = "M";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue