file_test.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package pathx
  2. import (
  3. "io/ioutil"
  4. "os"
  5. "path/filepath"
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. "github.com/zeromicro/go-zero/tools/goctl/internal/version"
  9. )
  10. func TestGetTemplateDir(t *testing.T) {
  11. category := "foo"
  12. t.Run("before_have_templates", func(t *testing.T) {
  13. home := t.TempDir()
  14. RegisterGoctlHome("")
  15. RegisterGoctlHome(home)
  16. v := version.GetGoctlVersion()
  17. dir := filepath.Join(home, v, category)
  18. err := MkdirIfNotExist(dir)
  19. if err != nil {
  20. return
  21. }
  22. tempFile := filepath.Join(dir, "bar.txt")
  23. err = ioutil.WriteFile(tempFile, []byte("foo"), os.ModePerm)
  24. if err != nil {
  25. return
  26. }
  27. templateDir, err := GetTemplateDir(category)
  28. if err != nil {
  29. return
  30. }
  31. assert.Equal(t, dir, templateDir)
  32. RegisterGoctlHome("")
  33. })
  34. t.Run("before_has_no_template", func(t *testing.T) {
  35. home := t.TempDir()
  36. RegisterGoctlHome("")
  37. RegisterGoctlHome(home)
  38. dir := filepath.Join(home, category)
  39. err := MkdirIfNotExist(dir)
  40. if err != nil {
  41. return
  42. }
  43. templateDir, err := GetTemplateDir(category)
  44. if err != nil {
  45. return
  46. }
  47. assert.Equal(t, dir, templateDir)
  48. })
  49. t.Run("default", func(t *testing.T) {
  50. RegisterGoctlHome("")
  51. dir, err := GetTemplateDir(category)
  52. if err != nil {
  53. return
  54. }
  55. assert.Contains(t, dir, version.BuildVersion)
  56. })
  57. }
  58. func TestGetGitHome(t *testing.T) {
  59. homeDir, err := os.UserHomeDir()
  60. if err != nil {
  61. return
  62. }
  63. actual, err := GetGitHome()
  64. if err != nil {
  65. return
  66. }
  67. expected := filepath.Join(homeDir, goctlDir, gitDir)
  68. assert.Equal(t, expected, actual)
  69. }
  70. func TestGetGoctlHome(t *testing.T) {
  71. t.Run("goctl_is_file", func(t *testing.T) {
  72. tmpFile := filepath.Join(t.TempDir(), "a.tmp")
  73. backupTempFile := tmpFile + ".old"
  74. err := ioutil.WriteFile(tmpFile, nil, 0o666)
  75. if err != nil {
  76. return
  77. }
  78. RegisterGoctlHome(tmpFile)
  79. home, err := GetGoctlHome()
  80. if err != nil {
  81. return
  82. }
  83. info, err := os.Stat(home)
  84. assert.Nil(t, err)
  85. assert.True(t, info.IsDir())
  86. _, err = os.Stat(backupTempFile)
  87. assert.Nil(t, err)
  88. })
  89. t.Run("goctl_is_dir", func(t *testing.T) {
  90. RegisterGoctlHome("")
  91. dir := t.TempDir()
  92. RegisterGoctlHome(dir)
  93. home, err := GetGoctlHome()
  94. assert.Nil(t, err)
  95. assert.Equal(t, dir, home)
  96. })
  97. }