mirror of
https://github.com/protocolbuffers/protobuf-go.git
synced 2025-01-01 03:14:16 +00:00
e182c917f0
This adds minimal support for preserving the source context information. Change-Id: I4b3cac9690b7469ecb4e5434251a809be4d7894c Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/183157 Reviewed-by: Damien Neil <dneil@google.com>
60 lines
1.7 KiB
Go
60 lines
1.7 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 descfmt
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
// TestDescriptorAccessors tests that descriptorAccessors is up-to-date.
|
|
func TestDescriptorAccessors(t *testing.T) {
|
|
ignore := map[string]bool{
|
|
"ParentFile": true,
|
|
"Parent": true,
|
|
"Index": true,
|
|
"Syntax": true,
|
|
"Name": true,
|
|
"FullName": true,
|
|
"IsPlaceholder": true,
|
|
"Options": true,
|
|
"ProtoInternal": true,
|
|
"ProtoType": true,
|
|
|
|
"SourceLocations": true, // specific to FileDescriptor
|
|
"ExtensionRangeOptions": true, // specific to MessageDescriptor
|
|
"DefaultEnumValue": true, // specific to FieldDescriptor
|
|
"MapKey": true, // specific to FieldDescriptor
|
|
"MapValue": true, // specific to FieldDescriptor
|
|
}
|
|
|
|
for rt, m := range descriptorAccessors {
|
|
got := map[string]bool{}
|
|
for _, s := range m {
|
|
got[s] = true
|
|
}
|
|
want := map[string]bool{}
|
|
for i := 0; i < rt.NumMethod(); i++ {
|
|
want[rt.Method(i).Name] = true
|
|
}
|
|
|
|
// Check if descriptorAccessors contains a non-existent accessor.
|
|
// If this test fails, remove the accessor from descriptorAccessors.
|
|
for s := range got {
|
|
if !want[s] && !ignore[s] {
|
|
t.Errorf("%v.%v does not exist", rt, s)
|
|
}
|
|
}
|
|
|
|
// Check if there are new protoreflect interface methods that are not
|
|
// handled by the formatter. If this fails, either add the method to
|
|
// ignore or add them to descriptorAccessors.
|
|
for s := range want {
|
|
if !got[s] && !ignore[s] {
|
|
t.Errorf("%v.%v is not called by formatter", rt, s)
|
|
}
|
|
}
|
|
}
|
|
}
|