diff options
| author | robot-piglet <[email protected]> | 2026-01-27 11:53:29 +0300 |
|---|---|---|
| committer | robot-piglet <[email protected]> | 2026-01-27 12:18:50 +0300 |
| commit | 6e8a76754f755f5767edd66b8a595c83700ee28b (patch) | |
| tree | 2e652e8e4c088795d66e7bc054e50ecb409a9708 /library/cpp | |
| parent | f200c340a6ac711d0c2d51c440cb95d821348098 (diff) | |
Intermediate changes
commit_hash:297b5880340725ec9a28608c1af7a50742ef4995
Diffstat (limited to 'library/cpp')
| -rw-r--r-- | library/cpp/protobuf/dynamic_prototype/dynamic_prototype.cpp | 3 | ||||
| -rw-r--r-- | library/cpp/protobuf/dynamic_prototype/ut/dynamic_prototype_ut.cpp | 10 |
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"); + } } |
