file_test.go 2.2 KB

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