command_test.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package command
  2. import (
  3. _ "embed"
  4. "io/ioutil"
  5. "os"
  6. "path/filepath"
  7. "testing"
  8. "github.com/stretchr/testify/assert"
  9. "github.com/zeromicro/go-zero/tools/goctl/config"
  10. "github.com/zeromicro/go-zero/tools/goctl/model/sql/gen"
  11. "github.com/zeromicro/go-zero/tools/goctl/util/pathx"
  12. )
  13. var (
  14. //go:embed testdata/user.sql
  15. sql string
  16. cfg = &config.Config{
  17. NamingFormat: "gozero",
  18. }
  19. )
  20. func TestFromDDl(t *testing.T) {
  21. err := gen.Clean()
  22. assert.Nil(t, err)
  23. err = fromDDL("./user.sql", pathx.MustTempDir(), cfg, true, false, "go_zero")
  24. assert.Equal(t, errNotMatched, err)
  25. // case dir is not exists
  26. unknownDir := filepath.Join(pathx.MustTempDir(), "test", "user.sql")
  27. err = fromDDL(unknownDir, pathx.MustTempDir(), cfg, true, false, "go_zero")
  28. assert.True(t, func() bool {
  29. switch err.(type) {
  30. case *os.PathError:
  31. return true
  32. default:
  33. return false
  34. }
  35. }())
  36. // case empty src
  37. err = fromDDL("", pathx.MustTempDir(), cfg, true, false, "go_zero")
  38. if err != nil {
  39. assert.Equal(t, "expected path or path globbing patterns, but nothing found", err.Error())
  40. }
  41. tempDir := filepath.Join(pathx.MustTempDir(), "test")
  42. err = pathx.MkdirIfNotExist(tempDir)
  43. if err != nil {
  44. return
  45. }
  46. user1Sql := filepath.Join(tempDir, "user1.sql")
  47. user2Sql := filepath.Join(tempDir, "user2.sql")
  48. err = ioutil.WriteFile(user1Sql, []byte(sql), os.ModePerm)
  49. if err != nil {
  50. return
  51. }
  52. err = ioutil.WriteFile(user2Sql, []byte(sql), os.ModePerm)
  53. if err != nil {
  54. return
  55. }
  56. _, err = os.Stat(user1Sql)
  57. assert.Nil(t, err)
  58. _, err = os.Stat(user2Sql)
  59. assert.Nil(t, err)
  60. filename := filepath.Join(tempDir, "usermodel.go")
  61. fromDDL := func(db string) {
  62. err = fromDDL(filepath.Join(tempDir, "user*.sql"), tempDir, cfg, true, false, db)
  63. assert.Nil(t, err)
  64. _, err = os.Stat(filename)
  65. assert.Nil(t, err)
  66. }
  67. fromDDL("go_zero")
  68. _ = os.Remove(filename)
  69. fromDDL("go-zero")
  70. _ = os.Remove(filename)
  71. fromDDL("1gozero")
  72. }