gen_test.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. package generator
  2. import (
  3. "os"
  4. "path/filepath"
  5. "strings"
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. "github.com/tal-tech/go-zero/tools/goctl/rpc/execx"
  9. )
  10. func TestRpcGenerateCaseNilImport(t *testing.T) {
  11. _ = Clean()
  12. dispatcher := NewDefaultGenerator()
  13. if err := dispatcher.Prepare(); err == nil {
  14. g := NewRpcGenerator(dispatcher)
  15. abs, err := filepath.Abs("./test")
  16. assert.Nil(t, err)
  17. err = g.Generate("./test_stream.proto", abs, nil)
  18. defer func() {
  19. _ = os.RemoveAll(abs)
  20. }()
  21. assert.Nil(t, err)
  22. _, err = execx.Run("go test "+abs, abs)
  23. assert.Nil(t, err)
  24. }
  25. }
  26. func TestRpcGenerateCaseOption(t *testing.T) {
  27. _ = Clean()
  28. dispatcher := NewDefaultGenerator()
  29. if err := dispatcher.Prepare(); err == nil {
  30. g := NewRpcGenerator(dispatcher)
  31. abs, err := filepath.Abs("./test")
  32. assert.Nil(t, err)
  33. err = g.Generate("./test_option.proto", abs, nil)
  34. defer func() {
  35. _ = os.RemoveAll(abs)
  36. }()
  37. assert.Nil(t, err)
  38. _, err = execx.Run("go test "+abs, abs)
  39. assert.Nil(t, err)
  40. }
  41. }
  42. func TestRpcGenerateCaseWordOption(t *testing.T) {
  43. _ = Clean()
  44. dispatcher := NewDefaultGenerator()
  45. if err := dispatcher.Prepare(); err == nil {
  46. g := NewRpcGenerator(dispatcher)
  47. abs, err := filepath.Abs("./test")
  48. assert.Nil(t, err)
  49. err = g.Generate("./test_word_option.proto", abs, nil)
  50. defer func() {
  51. _ = os.RemoveAll(abs)
  52. }()
  53. assert.Nil(t, err)
  54. _, err = execx.Run("go test "+abs, abs)
  55. assert.Nil(t, err)
  56. }
  57. }
  58. // test keyword go
  59. func TestRpcGenerateCaseGoOption(t *testing.T) {
  60. _ = Clean()
  61. dispatcher := NewDefaultGenerator()
  62. if err := dispatcher.Prepare(); err == nil {
  63. g := NewRpcGenerator(dispatcher)
  64. abs, err := filepath.Abs("./test")
  65. assert.Nil(t, err)
  66. err = g.Generate("./test_go_option.proto", abs, nil)
  67. defer func() {
  68. _ = os.RemoveAll(abs)
  69. }()
  70. assert.Nil(t, err)
  71. _, err = execx.Run("go test "+abs, abs)
  72. assert.Nil(t, err)
  73. }
  74. }
  75. func TestRpcGenerateCaseImport(t *testing.T) {
  76. _ = Clean()
  77. dispatcher := NewDefaultGenerator()
  78. if err := dispatcher.Prepare(); err == nil {
  79. g := NewRpcGenerator(dispatcher)
  80. abs, err := filepath.Abs("./test")
  81. assert.Nil(t, err)
  82. err = g.Generate("./test_import.proto", abs, []string{"./base"})
  83. defer func() {
  84. _ = os.RemoveAll(abs)
  85. }()
  86. assert.Nil(t, err)
  87. _, err = execx.Run("go test "+abs, abs)
  88. assert.True(t, func() bool {
  89. return strings.Contains(err.Error(), "package base is not in GOROOT")
  90. }())
  91. }
  92. }
  93. func TestRpcGenerateCaseServiceRpcNamingSnake(t *testing.T) {
  94. _ = Clean()
  95. dispatcher := NewDefaultGenerator()
  96. if err := dispatcher.Prepare(); err == nil {
  97. g := NewRpcGenerator(dispatcher)
  98. abs, err := filepath.Abs("./test")
  99. assert.Nil(t, err)
  100. err = g.Generate("./test_service_rpc_naming_snake.proto", abs, nil)
  101. defer func() {
  102. _ = os.RemoveAll(abs)
  103. }()
  104. assert.Nil(t, err)
  105. _, err = execx.Run("go test "+abs, abs)
  106. assert.Nil(t, err)
  107. }
  108. }