@@ -159,6 +159,40 @@ public void testFileDescriptorGetSyntax() throws Exception {
159159 assertThat (file3 .getSyntax ()).isEqualTo (Descriptors .FileDescriptor .Syntax .PROTO3 );
160160 }
161161
162+ @ Test
163+ public void testFileDescriptorCopyHeadingTo () throws Exception {
164+ FileDescriptorProto .Builder protoBuilder =
165+ FileDescriptorProto .newBuilder ()
166+ .setName ("foo.proto" )
167+ .setPackage ("foo.bar.baz" )
168+ .setSyntax ("proto2" )
169+ .setOptions (FileOptions .newBuilder ().setJavaPackage ("foo.bar.baz" ).build ())
170+ // Won't be copied.
171+ .addMessageType (DescriptorProto .newBuilder ().setName ("Foo" ).build ());
172+ FileDescriptor file2 =
173+ Descriptors .FileDescriptor .buildFrom (protoBuilder .build (), new FileDescriptor [0 ]);
174+ FileDescriptorProto .Builder protoBuilder2 = FileDescriptorProto .newBuilder ();
175+ file2 .copyHeadingTo (protoBuilder2 );
176+ FileDescriptorProto toProto2 = protoBuilder2 .build ();
177+ assertThat (toProto2 .getName ()).isEqualTo ("foo.proto" );
178+ assertThat (toProto2 .getPackage ()).isEqualTo ("foo.bar.baz" );
179+ assertThat (toProto2 .getSyntax ()).isEqualTo ("proto2" );
180+ assertThat (toProto2 .getOptions ().getJavaPackage ()).isEqualTo ("foo.bar.baz" );
181+ assertThat (toProto2 .getMessageTypeList ()).isEmpty ();
182+
183+ protoBuilder .setSyntax ("proto3" );
184+ FileDescriptor file3 =
185+ Descriptors .FileDescriptor .buildFrom (protoBuilder .build (), new FileDescriptor [0 ]);
186+ FileDescriptorProto .Builder protoBuilder3 = FileDescriptorProto .newBuilder ();
187+ file3 .copyHeadingTo (protoBuilder3 );
188+ FileDescriptorProto toProto3 = protoBuilder3 .build ();
189+ assertThat (toProto3 .getName ()).isEqualTo ("foo.proto" );
190+ assertThat (toProto3 .getPackage ()).isEqualTo ("foo.bar.baz" );
191+ assertThat (toProto3 .getSyntax ()).isEqualTo ("proto3" );
192+ assertThat (toProto2 .getOptions ().getJavaPackage ()).isEqualTo ("foo.bar.baz" );
193+ assertThat (toProto3 .getMessageTypeList ()).isEmpty ();
194+ }
195+
162196 @ Test
163197 public void testDescriptor () throws Exception {
164198 Descriptor messageType = TestAllTypes .getDescriptor ();
0 commit comments