gen_test.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package generator
  2. import (
  3. "go/build"
  4. "os"
  5. "path/filepath"
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. "github.com/tal-tech/go-zero/core/logx"
  9. "github.com/tal-tech/go-zero/core/stringx"
  10. "github.com/tal-tech/go-zero/tools/goctl/rpc/execx"
  11. )
  12. func TestRpcGenerate(t *testing.T) {
  13. _ = Clean()
  14. dispatcher := NewDefaultGenerator()
  15. err := dispatcher.Prepare()
  16. if err != nil {
  17. logx.Error(err)
  18. return
  19. }
  20. projectName := stringx.Rand()
  21. g := NewRpcGenerator(dispatcher, namingLower)
  22. // case go path
  23. src := filepath.Join(build.Default.GOPATH, "src")
  24. _, err = os.Stat(src)
  25. if err != nil {
  26. return
  27. }
  28. projectDir := filepath.Join(src, projectName)
  29. srcDir := projectDir
  30. defer func() {
  31. _ = os.RemoveAll(srcDir)
  32. }()
  33. err = g.Generate("./test.proto", projectDir, []string{src})
  34. assert.Nil(t, err)
  35. _, err = execx.Run("go test "+projectName, projectDir)
  36. if err != nil {
  37. assert.Contains(t, err.Error(), "not in GOROOT")
  38. }
  39. // case go mod
  40. workDir := t.TempDir()
  41. name := filepath.Base(workDir)
  42. _, err = execx.Run("go mod init "+name, workDir)
  43. if err != nil {
  44. logx.Error(err)
  45. return
  46. }
  47. projectDir = filepath.Join(workDir, projectName)
  48. err = g.Generate("./test.proto", projectDir, []string{src})
  49. assert.Nil(t, err)
  50. _, err = execx.Run("go test "+projectName, projectDir)
  51. if err != nil {
  52. assert.Contains(t, err.Error(), "not in GOROOT")
  53. }
  54. // case not in go mod and go path
  55. err = g.Generate("./test.proto", projectDir, []string{src})
  56. assert.Nil(t, err)
  57. _, err = execx.Run("go test "+projectName, projectDir)
  58. if err != nil {
  59. assert.Contains(t, err.Error(), "not in GOROOT")
  60. }
  61. // invalid directory
  62. projectDir = filepath.Join(t.TempDir(), ".....")
  63. err = g.Generate("./test.proto", projectDir, nil)
  64. assert.NotNil(t, err)
  65. }