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  }