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