summaryrefslogtreecommitdiffstats
path: root/library/cpp
diff options
context:
space:
mode:
authorrobot-piglet <[email protected]>2026-01-27 11:53:29 +0300
committerrobot-piglet <[email protected]>2026-01-27 12:18:50 +0300
commit6e8a76754f755f5767edd66b8a595c83700ee28b (patch)
tree2e652e8e4c088795d66e7bc054e50ecb409a9708 /library/cpp
parentf200c340a6ac711d0c2d51c440cb95d821348098 (diff)
Intermediate changes
commit_hash:297b5880340725ec9a28608c1af7a50742ef4995
Diffstat (limited to 'library/cpp')
-rw-r--r--library/cpp/protobuf/dynamic_prototype/dynamic_prototype.cpp3
-rw-r--r--library/cpp/protobuf/dynamic_prototype/ut/dynamic_prototype_ut.cpp10
2 files changed, 12 insertions, 1 deletions
diff --git a/library/cpp/protobuf/dynamic_prototype/dynamic_prototype.cpp b/library/cpp/protobuf/dynamic_prototype/dynamic_prototype.cpp
index 692331fbbe6..5f7d3db6ab0 100644
--- a/library/cpp/protobuf/dynamic_prototype/dynamic_prototype.cpp
+++ b/library/cpp/protobuf/dynamic_prototype/dynamic_prototype.cpp
@@ -26,7 +26,7 @@ TDynamicPrototypePtr TDynamicPrototype::Create(const NProtoBuf::FileDescriptorSe
TDynamicPrototype::TDynamicPrototype(const NProtoBuf::FileDescriptorSet& fileDescriptorSet, const TString& messageName, bool yqlHack)
{
- const NProtoBuf::FileDescriptor* fileDescriptor;
+ const NProtoBuf::FileDescriptor* fileDescriptor = nullptr;
for (int i = 0; i < fileDescriptorSet.file_size(); ++i) {
fileDescriptor = Pool.BuildFile(fileDescriptorSet.file(i));
@@ -40,6 +40,7 @@ TDynamicPrototype::TDynamicPrototype(const NProtoBuf::FileDescriptorSet& fileDes
// Первоначальный вариант поведения, когда тип определялся
// по имени сообщения верхнего уровня в заданном файле.
if (yqlHack && !Descriptor) {
+ Y_ENSURE(fileDescriptor, "no descriptor for " << messageName);
Descriptor = fileDescriptor->FindMessageTypeByName(messageName);
}
diff --git a/library/cpp/protobuf/dynamic_prototype/ut/dynamic_prototype_ut.cpp b/library/cpp/protobuf/dynamic_prototype/ut/dynamic_prototype_ut.cpp
index bf3bfca4aa6..49ec74299d7 100644
--- a/library/cpp/protobuf/dynamic_prototype/ut/dynamic_prototype_ut.cpp
+++ b/library/cpp/protobuf/dynamic_prototype/ut/dynamic_prototype_ut.cpp
@@ -4,6 +4,7 @@
#include <library/cpp/protobuf/dynamic_prototype/generate_file_descriptor_set.h>
#include <library/cpp/protobuf/dynamic_prototype/ut/my_message.pb.h>
+#include <util/generic/yexception.h>
Y_UNIT_TEST_SUITE(TDynamicPrototype) {
Y_UNIT_TEST(Create) {
@@ -24,4 +25,13 @@ Y_UNIT_TEST_SUITE(TDynamicPrototype) {
UNIT_ASSERT_STRINGS_EQUAL(reference.DebugString(), myMessage->DebugString());
}
+
+ Y_UNIT_TEST(WithYqlHackAndEmptyDescriptorSet) {
+ NProtoBuf::FileDescriptorSet emptyFds;
+
+ UNIT_ASSERT_EXCEPTION_CONTAINS(
+ TDynamicPrototype::Create(emptyFds, "TMyMessage", /*yqlHack=*/true),
+ yexception,
+ "no descriptor for TMyMessage");
+ }
}