mirror of
https://github.com/protocolbuffers/protobuf-go.git
synced 2025-01-04 02:38:50 +00:00
a95b29fbf6
Rename each generated protobuf package such that the base of the Go package path is always equal to the Go package name to follow proper Go package naming conventions. The Go package name is derived from the .proto source file name by replacing ".proto" with "pb" and stripping all underscores. Change-Id: Iea05d1b5d94b1b2821ae10276ab771bb2df93c0e Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/177380 Reviewed-by: Damien Neil <dneil@google.com>
73 lines
2.3 KiB
Go
73 lines
2.3 KiB
Go
// Copyright 2018 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"io/ioutil"
|
|
"testing"
|
|
|
|
"github.com/golang/protobuf/proto"
|
|
"google.golang.org/protobuf/internal/fieldnum"
|
|
"google.golang.org/protobuf/internal/scalar"
|
|
|
|
"google.golang.org/protobuf/types/descriptorpb"
|
|
)
|
|
|
|
func TestAnnotations(t *testing.T) {
|
|
sourceFile, err := ioutil.ReadFile("testdata/annotations/annotations.pb.go")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
metaFile, err := ioutil.ReadFile("testdata/annotations/annotations.pb.go.meta")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
gotInfo := &descriptorpb.GeneratedCodeInfo{}
|
|
if err := proto.UnmarshalText(string(metaFile), gotInfo); err != nil {
|
|
t.Fatalf("can't parse meta file: %v", err)
|
|
}
|
|
|
|
wantInfo := &descriptorpb.GeneratedCodeInfo{}
|
|
for _, want := range []struct {
|
|
prefix, text, suffix string
|
|
path []int32
|
|
}{{
|
|
"type ", "AnnotationsTestEnum", " int32",
|
|
[]int32{fieldnum.FileDescriptorProto_EnumType, 0},
|
|
}, {
|
|
"\t", "AnnotationsTestEnum_ANNOTATIONS_TEST_ENUM_VALUE", " AnnotationsTestEnum = 0",
|
|
[]int32{fieldnum.FileDescriptorProto_EnumType, 0, fieldnum.EnumDescriptorProto_Value, 0},
|
|
}, {
|
|
"type ", "AnnotationsTestMessage", " struct {",
|
|
[]int32{fieldnum.FileDescriptorProto_MessageType, 0},
|
|
}, {
|
|
"\t", "AnnotationsTestField", " ",
|
|
[]int32{fieldnum.FileDescriptorProto_MessageType, 0, fieldnum.DescriptorProto_Field, 0},
|
|
}, {
|
|
"func (x *AnnotationsTestMessage) ", "GetAnnotationsTestField", "() string {",
|
|
[]int32{fieldnum.FileDescriptorProto_MessageType, 0, fieldnum.DescriptorProto_Field, 0},
|
|
}} {
|
|
s := want.prefix + want.text + want.suffix
|
|
pos := bytes.Index(sourceFile, []byte(s))
|
|
if pos < 0 {
|
|
t.Errorf("source file does not contain: %v", s)
|
|
continue
|
|
}
|
|
begin := pos + len(want.prefix)
|
|
end := begin + len(want.text)
|
|
wantInfo.Annotation = append(wantInfo.Annotation, &descriptorpb.GeneratedCodeInfo_Annotation{
|
|
Path: want.path,
|
|
Begin: scalar.Int32(int32(begin)),
|
|
End: scalar.Int32(int32(end)),
|
|
SourceFile: scalar.String("annotations/annotations.proto"),
|
|
})
|
|
}
|
|
if !proto.Equal(gotInfo, wantInfo) {
|
|
t.Errorf("unexpected annotations for annotations.proto; got:\n%v\nwant:\n%v",
|
|
proto.MarshalTextString(gotInfo), proto.MarshalTextString(wantInfo))
|
|
}
|
|
}
|