mkdir_test.go 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package generator
  2. import (
  3. "go/build"
  4. "os"
  5. "path/filepath"
  6. "strings"
  7. "testing"
  8. "github.com/stretchr/testify/assert"
  9. "github.com/tal-tech/go-zero/core/stringx"
  10. "github.com/tal-tech/go-zero/tools/goctl/rpc/execx"
  11. "github.com/tal-tech/go-zero/tools/goctl/rpc/parser"
  12. "github.com/tal-tech/go-zero/tools/goctl/util"
  13. "github.com/tal-tech/go-zero/tools/goctl/util/ctx"
  14. )
  15. func TestMkDirInGoPath(t *testing.T) {
  16. dft := build.Default
  17. gp := dft.GOPATH
  18. if len(gp) == 0 {
  19. return
  20. }
  21. projectName := stringx.Rand()
  22. dir := filepath.Join(gp, "src", projectName)
  23. err := util.MkdirIfNotExist(dir)
  24. if err != nil {
  25. return
  26. }
  27. defer func() {
  28. _ = os.RemoveAll(dir)
  29. }()
  30. projectCtx, err := ctx.Prepare(dir)
  31. assert.Nil(t, err)
  32. p := parser.NewDefaultProtoParser()
  33. proto, err := p.Parse("./test.proto")
  34. assert.Nil(t, err)
  35. dirCtx, err := mkdir(projectCtx, proto)
  36. assert.Nil(t, err)
  37. internal := filepath.Join(dir, "internal")
  38. assert.True(t, true, func() bool {
  39. return filepath.Join(dir, strings.ToLower(projectName)) == dirCtx.GetCall().Filename && projectName == dirCtx.GetCall().Package
  40. }())
  41. assert.True(t, true, func() bool {
  42. return filepath.Join(dir, "etc") == dirCtx.GetEtc().Filename && filepath.Join(projectName, "etc") == dirCtx.GetEtc().Package
  43. }())
  44. assert.True(t, true, func() bool {
  45. return internal == dirCtx.GetInternal().Filename && filepath.Join(projectName, "internal") == dirCtx.GetInternal().Package
  46. }())
  47. assert.True(t, true, func() bool {
  48. return filepath.Join(internal, "config") == dirCtx.GetConfig().Filename && filepath.Join(projectName, "internal", "config") == dirCtx.GetConfig().Package
  49. }())
  50. assert.True(t, true, func() bool {
  51. return filepath.Join(internal, "logic") == dirCtx.GetLogic().Filename && filepath.Join(projectName, "internal", "logic") == dirCtx.GetLogic().Package
  52. }())
  53. assert.True(t, true, func() bool {
  54. return filepath.Join(internal, "server") == dirCtx.GetServer().Filename && filepath.Join(projectName, "internal", "server") == dirCtx.GetServer().Package
  55. }())
  56. assert.True(t, true, func() bool {
  57. return filepath.Join(internal, "svc") == dirCtx.GetSvc().Filename && filepath.Join(projectName, "internal", "svc") == dirCtx.GetSvc().Package
  58. }())
  59. assert.True(t, true, func() bool {
  60. return filepath.Join(internal, strings.ToLower(proto.Service.Name)) == dirCtx.GetPb().Filename && filepath.Join(projectName, "internal", strings.ToLower(proto.Service.Name)) == dirCtx.GetPb().Package
  61. }())
  62. assert.True(t, true, func() bool {
  63. return dir == dirCtx.GetMain().Filename && projectName == dirCtx.GetMain().Package
  64. }())
  65. }
  66. func TestMkDirInGoMod(t *testing.T) {
  67. dft := build.Default
  68. gp := dft.GOPATH
  69. if len(gp) == 0 {
  70. return
  71. }
  72. projectName := stringx.Rand()
  73. dir := filepath.Join(gp, "src", projectName)
  74. err := util.MkdirIfNotExist(dir)
  75. if err != nil {
  76. return
  77. }
  78. _, err = execx.Run("go mod init "+projectName, dir)
  79. assert.Nil(t, err)
  80. defer func() {
  81. _ = os.RemoveAll(dir)
  82. }()
  83. projectCtx, err := ctx.Prepare(dir)
  84. assert.Nil(t, err)
  85. p := parser.NewDefaultProtoParser()
  86. proto, err := p.Parse("./test.proto")
  87. assert.Nil(t, err)
  88. dirCtx, err := mkdir(projectCtx, proto)
  89. assert.Nil(t, err)
  90. internal := filepath.Join(dir, "internal")
  91. assert.True(t, true, func() bool {
  92. return filepath.Join(dir, strings.ToLower(projectName)) == dirCtx.GetCall().Filename && projectName == dirCtx.GetCall().Package
  93. }())
  94. assert.True(t, true, func() bool {
  95. return filepath.Join(dir, "etc") == dirCtx.GetEtc().Filename && filepath.Join(projectName, "etc") == dirCtx.GetEtc().Package
  96. }())
  97. assert.True(t, true, func() bool {
  98. return internal == dirCtx.GetInternal().Filename && filepath.Join(projectName, "internal") == dirCtx.GetInternal().Package
  99. }())
  100. assert.True(t, true, func() bool {
  101. return filepath.Join(internal, "config") == dirCtx.GetConfig().Filename && filepath.Join(projectName, "internal", "config") == dirCtx.GetConfig().Package
  102. }())
  103. assert.True(t, true, func() bool {
  104. return filepath.Join(internal, "logic") == dirCtx.GetLogic().Filename && filepath.Join(projectName, "internal", "logic") == dirCtx.GetLogic().Package
  105. }())
  106. assert.True(t, true, func() bool {
  107. return filepath.Join(internal, "server") == dirCtx.GetServer().Filename && filepath.Join(projectName, "internal", "server") == dirCtx.GetServer().Package
  108. }())
  109. assert.True(t, true, func() bool {
  110. return filepath.Join(internal, "svc") == dirCtx.GetSvc().Filename && filepath.Join(projectName, "internal", "svc") == dirCtx.GetSvc().Package
  111. }())
  112. assert.True(t, true, func() bool {
  113. return filepath.Join(internal, strings.ToLower(proto.Service.Name)) == dirCtx.GetPb().Filename && filepath.Join(projectName, "internal", strings.ToLower(proto.Service.Name)) == dirCtx.GetPb().Package
  114. }())
  115. assert.True(t, true, func() bool {
  116. return dir == dirCtx.GetMain().Filename && projectName == dirCtx.GetMain().Package
  117. }())
  118. }