go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/starlark/starlarkproto/descriptor_set_test.go (about) 1 // Copyright 2019 The LUCI Authors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package starlarkproto 16 17 import ( 18 "testing" 19 20 "google.golang.org/protobuf/types/descriptorpb" 21 ) 22 23 func fdp(name string, deps ...string) *descriptorpb.FileDescriptorProto { 24 return &descriptorpb.FileDescriptorProto{ 25 Name: &name, 26 Dependency: deps, 27 } 28 } 29 30 func fdps(d ...*descriptorpb.FileDescriptorProto) []*descriptorpb.FileDescriptorProto { return d } 31 func deps(d ...*DescriptorSet) []*DescriptorSet { return d } 32 33 func TestDescriptorSetDiamond(t *testing.T) { 34 t.Parallel() 35 36 base, err := NewDescriptorSet("base", fdps(fdp("base.proto")), nil) 37 if err != nil { 38 t.Fatalf("base: %v", err) 39 } 40 left, err := NewDescriptorSet("left", fdps(fdp("left.proto", "base.proto")), deps(base)) 41 if err != nil { 42 t.Fatalf("left: %v", err) 43 } 44 right, err := NewDescriptorSet("right", fdps(fdp("right.proto", "base.proto")), deps(base)) 45 if err != nil { 46 t.Fatalf("right: %v", err) 47 } 48 _, err = NewDescriptorSet("top", fdps(fdp("top.proto", "left.proto", "right.proto")), deps(left, right)) 49 if err != nil { 50 t.Fatalf("top: %v", err) 51 } 52 } 53 54 func TestDescriptorSetDupFile(t *testing.T) { 55 t.Parallel() 56 57 a, _ := NewDescriptorSet("a", fdps(fdp("file.proto")), nil) 58 b, _ := NewDescriptorSet("b", fdps(fdp("file.proto")), nil) 59 60 if _, err := NewDescriptorSet("c", nil, deps(a, b)); err == nil { 61 t.Fatalf("unexpectedly succeeded") 62 } 63 } 64 65 func TestDescriptorSetUnknownFile(t *testing.T) { 66 t.Parallel() 67 68 a, _ := NewDescriptorSet("a", fdps(fdp("a.proto")), nil) 69 if _, err := NewDescriptorSet("b", fdps(fdp("b.proto", "a.proto", "unknown.proto")), deps(a)); err == nil { 70 t.Fatalf("unexpectedly succeeded") 71 } 72 }