genpb_test.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. package generator
  2. import (
  3. "os"
  4. "path/filepath"
  5. "testing"
  6. "github.com/stretchr/testify/assert"
  7. "github.com/tal-tech/go-zero/tools/goctl/rpc/parser"
  8. "github.com/tal-tech/go-zero/tools/goctl/util"
  9. "github.com/tal-tech/go-zero/tools/goctl/util/ctx"
  10. )
  11. func TestGenerateCaseNilImport(t *testing.T) {
  12. project := "stream"
  13. abs, err := filepath.Abs("./test")
  14. assert.Nil(t, err)
  15. dir := filepath.Join(abs, project)
  16. err = util.MkdirIfNotExist(dir)
  17. assert.Nil(t, err)
  18. defer func() {
  19. //_ = os.RemoveAll(abs)
  20. }()
  21. projectCtx, err := ctx.Prepare(dir)
  22. assert.Nil(t, err)
  23. p := parser.NewDefaultProtoParser()
  24. proto, err := p.Parse("./test_stream.proto")
  25. assert.Nil(t, err)
  26. dirCtx, err := mkdir(projectCtx, proto)
  27. assert.Nil(t, err)
  28. g := NewDefaultGenerator()
  29. if err := g.Prepare(); err == nil {
  30. targetPb := filepath.Join(dirCtx.GetPb().Filename, "test_stream.pb.go")
  31. err = g.GenPb(dirCtx, nil, proto)
  32. assert.Nil(t, err)
  33. assert.True(t, func() bool {
  34. return util.FileExists(targetPb)
  35. }())
  36. }
  37. }
  38. func TestGenerateCaseImport(t *testing.T) {
  39. project := "stream"
  40. abs, err := filepath.Abs("./test")
  41. assert.Nil(t, err)
  42. dir := filepath.Join(abs, project)
  43. err = util.MkdirIfNotExist(dir)
  44. assert.Nil(t, err)
  45. defer func() {
  46. _ = os.RemoveAll(abs)
  47. }()
  48. projectCtx, err := ctx.Prepare(dir)
  49. assert.Nil(t, err)
  50. p := parser.NewDefaultProtoParser()
  51. proto, err := p.Parse("./test_stream.proto")
  52. assert.Nil(t, err)
  53. dirCtx, err := mkdir(projectCtx, proto)
  54. assert.Nil(t, err)
  55. g := NewDefaultGenerator()
  56. if err := g.Prepare(); err == nil {
  57. err = g.GenPb(dirCtx, nil, proto)
  58. assert.Nil(t, err)
  59. targetPb := filepath.Join(dirCtx.GetPb().Filename, "test_stream.pb.go")
  60. assert.True(t, func() bool {
  61. return util.FileExists(targetPb)
  62. }())
  63. }
  64. }
  65. func TestGenerateCasePathOption(t *testing.T) {
  66. project := "stream"
  67. abs, err := filepath.Abs("./test")
  68. assert.Nil(t, err)
  69. dir := filepath.Join(abs, project)
  70. err = util.MkdirIfNotExist(dir)
  71. assert.Nil(t, err)
  72. defer func() {
  73. _ = os.RemoveAll(abs)
  74. }()
  75. projectCtx, err := ctx.Prepare(dir)
  76. assert.Nil(t, err)
  77. p := parser.NewDefaultProtoParser()
  78. proto, err := p.Parse("./test_option.proto")
  79. assert.Nil(t, err)
  80. dirCtx, err := mkdir(projectCtx, proto)
  81. assert.Nil(t, err)
  82. g := NewDefaultGenerator()
  83. if err := g.Prepare(); err == nil {
  84. err = g.GenPb(dirCtx, nil, proto)
  85. assert.Nil(t, err)
  86. targetPb := filepath.Join(dirCtx.GetPb().Filename, "test_option.pb.go")
  87. assert.True(t, func() bool {
  88. return util.FileExists(targetPb)
  89. }())
  90. }
  91. }
  92. func TestGenerateCaseWordOption(t *testing.T) {
  93. project := "stream"
  94. abs, err := filepath.Abs("./test")
  95. assert.Nil(t, err)
  96. dir := filepath.Join(abs, project)
  97. err = util.MkdirIfNotExist(dir)
  98. assert.Nil(t, err)
  99. defer func() {
  100. _ = os.RemoveAll(abs)
  101. }()
  102. projectCtx, err := ctx.Prepare(dir)
  103. assert.Nil(t, err)
  104. p := parser.NewDefaultProtoParser()
  105. proto, err := p.Parse("./test_word_option.proto")
  106. assert.Nil(t, err)
  107. dirCtx, err := mkdir(projectCtx, proto)
  108. assert.Nil(t, err)
  109. g := NewDefaultGenerator()
  110. if err := g.Prepare(); err == nil {
  111. err = g.GenPb(dirCtx, nil, proto)
  112. assert.Nil(t, err)
  113. targetPb := filepath.Join(dirCtx.GetPb().Filename, "test_word_option.pb.go")
  114. assert.True(t, func() bool {
  115. return util.FileExists(targetPb)
  116. }())
  117. }
  118. }
  119. // test keyword go
  120. func TestGenerateCaseGoOption(t *testing.T) {
  121. project := "stream"
  122. abs, err := filepath.Abs("./test")
  123. assert.Nil(t, err)
  124. dir := filepath.Join(abs, project)
  125. err = util.MkdirIfNotExist(dir)
  126. assert.Nil(t, err)
  127. defer func() {
  128. _ = os.RemoveAll(abs)
  129. }()
  130. projectCtx, err := ctx.Prepare(dir)
  131. assert.Nil(t, err)
  132. p := parser.NewDefaultProtoParser()
  133. proto, err := p.Parse("./test_go_option.proto")
  134. assert.Nil(t, err)
  135. dirCtx, err := mkdir(projectCtx, proto)
  136. assert.Nil(t, err)
  137. g := NewDefaultGenerator()
  138. if err := g.Prepare(); err == nil {
  139. err = g.GenPb(dirCtx, nil, proto)
  140. assert.Nil(t, err)
  141. targetPb := filepath.Join(dirCtx.GetPb().Filename, "test_go_option.pb.go")
  142. assert.True(t, func() bool {
  143. return util.FileExists(targetPb)
  144. }())
  145. }
  146. }