Migrate upb_MessageUnknown calls in upb tests to use upb_Message_NextUnknown2.

PiperOrigin-RevId: 962412486
This commit is contained in:
Protobuf Team Bot 2026-08-10 15:50:03 -07:00 committed by Copybara-Service
parent 7023abcb48
commit 86dfa627be
8 changed files with 86 additions and 55 deletions

View file

@ -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__",

View file

@ -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);

View file

@ -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));
}
}

View file

@ -237,6 +237,7 @@ cc_test(
"//upb/base",
"//upb/mem",
"//upb/message",
"//upb/message:message_unknowns",
"//upb/mini_table",
"//upb/port",
"//upb/reflection",

View file

@ -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) {

View file

@ -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",

View file

@ -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.

View file

@ -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";