file_test.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package pathx
  2. import (
  3. "io/ioutil"
  4. "os"
  5. "path/filepath"
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. "github.com/tal-tech/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. }