@@ -3102,7 +3102,7 @@ TEST_F(CommandLineInterfaceTest, WriteTransitiveDescriptorSetWithSourceInfo) {
31023102 EXPECT_TRUE (descriptor_set.file (1 ).has_source_code_info ());
31033103}
31043104
3105- TEST_F (CommandLineInterfaceTest, NoWriteTransitiveOptionImportDescriptorSet ) {
3105+ TEST_F (CommandLineInterfaceTest, WriteTransitiveOptionImportDescriptorSet ) {
31063106 CreateTempFile (" google/protobuf/descriptor.proto" ,
31073107 google::protobuf::DescriptorProto::descriptor ()->file ()->DebugString ());
31083108 CreateTempFile (" custom_option.proto" ,
@@ -3138,13 +3138,41 @@ TEST_F(CommandLineInterfaceTest, NoWriteTransitiveOptionImportDescriptorSet) {
31383138 FileDescriptorSet descriptor_set;
31393139 ReadDescriptorSet (" descriptor_set" , &descriptor_set);
31403140 if (HasFatalFailure ()) return ;
3141- EXPECT_EQ (2 , descriptor_set.file_size ());
3141+ EXPECT_EQ (4 , descriptor_set.file_size ());
31423142 if (descriptor_set.file (0 ).name () == " bar.proto" ) {
31433143 std::swap (descriptor_set.mutable_file ()->mutable_data ()[0 ],
31443144 descriptor_set.mutable_file ()->mutable_data ()[1 ]);
31453145 }
31463146 EXPECT_EQ (" foo.proto" , descriptor_set.file (0 ).name ());
3147- EXPECT_EQ (" bar.proto" , descriptor_set.file (1 ).name ());
3147+ EXPECT_EQ (" google/protobuf/descriptor.proto" , descriptor_set.file (1 ).name ());
3148+ EXPECT_EQ (" custom_option.proto" , descriptor_set.file (2 ).name ());
3149+ EXPECT_EQ (" bar.proto" , descriptor_set.file (3 ).name ());
3150+ }
3151+
3152+ TEST_F (CommandLineInterfaceTest, DisallowMissingOptionImportsDescriptorSetIn) {
3153+ FileDescriptorSet file_descriptor_set;
3154+
3155+ FileDescriptorProto* file = file_descriptor_set.add_file ();
3156+ file->set_syntax (" editions" );
3157+ file->set_edition (Edition::EDITION_2024);
3158+ file->set_name (" foo.proto" );
3159+ file->add_option_dependency (" bar.proto" );
3160+ file->add_message_type ()->set_name (" Foo" );
3161+
3162+ // Add an unknown field to the file options to make it look like a custom
3163+ // option.
3164+ file->mutable_message_type (0 )
3165+ ->mutable_options ()
3166+ ->mutable_unknown_fields ()
3167+ ->AddVarint (123 , 456 );
3168+
3169+ WriteDescriptorSet (" foo.bin" , &file_descriptor_set);
3170+
3171+ Run (" protocol_compiler --descriptor_set_out=$tmpdir/descriptor_set "
3172+ " --include_imports --descriptor_set_in=$tmpdir/foo.bin "
3173+ " --proto_path=$tmpdir --experimental_editions foo.proto" );
3174+
3175+ ExpectErrorSubstring (" foo.proto: Import \" bar.proto\" was not found" );
31483176}
31493177
31503178TEST_F (CommandLineInterfaceTest, DescriptorSetOptionRetention) {
0 commit comments