github.com/cloudwego/dynamicgo@v0.2.6-0.20240519101509-707f41b6b834/proto/idl_test.go (about) 1 package proto 2 3 import ( 4 "context" 5 "fmt" 6 "testing" 7 ) 8 9 func TestProtoFromContent(t *testing.T) { 10 // change / to \\ on windows in path for right mapkey in includes 11 // because `filepath.Join(importPath, path)` in SourceResolver.FindFileByPath will change \\ to / 12 path := "a/b/main.proto" 13 content := ` 14 syntax = "proto3"; 15 package pb3; 16 option go_package = "pb/main"; 17 18 import "x.proto"; 19 import "../y.proto"; 20 21 message Main { 22 string name = 1; 23 } 24 25 service TestService2 { 26 rpc ExampleMethod(A) returns (B); 27 } 28 ` 29 30 includes := map[string]string{ 31 "a/b/x.proto": ` 32 syntax = "proto3"; 33 package pb3; 34 option go_package = "pb/a"; 35 message A { 36 string name = 1; 37 } 38 `, 39 "a/y.proto": ` 40 syntax = "proto3"; 41 package pb3; 42 option go_package = "pb/b"; 43 message B { 44 string name = 1; 45 } 46 `, 47 } 48 49 importDirs := []string{"a/b/"} 50 opts := Options{} 51 svc, err := opts.NewDesccriptorFromContent(context.Background(), path, content, includes, importDirs...) 52 if err != nil { 53 t.Fatal(err) 54 } 55 fmt.Printf("%#v\n", svc) 56 57 } 58 59 func TestProtoFromPath(t *testing.T) { 60 opts := Options{} 61 importDirs := []string{"../testdata/idl/"} 62 svc, err := opts.NewDescriptorFromPath(context.Background(), "example2.proto", importDirs...) 63 if err != nil { 64 t.Fatal(err) 65 } 66 fmt.Printf("%#v\n", svc) 67 }