github.com/kamiazya/dot-github@v1.3.0/template_dir_test.go (about) 1 package main 2 3 import ( 4 "os" 5 "path/filepath" 6 "runtime" 7 "strings" 8 "testing" 9 ) 10 11 func TestTemplateDir(t *testing.T) { 12 dir := TemplateDir() 13 if _, err := os.Stat(dir); os.IsNotExist(err) { 14 t.Fatalf("'.github' directory for templates must be created") 15 } 16 if !filepath.IsAbs(dir) { 17 t.Fatalf("TemplateDir() must return absolute path") 18 } 19 if !strings.Contains(dir, ".github") { 20 t.Fatalf("Invalid template dir path: %v", dir) 21 } 22 } 23 24 func TestSpecifiedByEnvVar(t *testing.T) { 25 w, _ := os.Getwd() 26 os.Setenv("DOT_GITHUB_HOME", w) 27 defer os.Setenv("DOT_GITHUB_HOME", "") 28 29 dir := TemplateDir() 30 if _, err := os.Stat(dir); os.IsNotExist(err) { 31 t.Fatalf("'.github' directory for templates must be created") 32 } 33 if !filepath.IsAbs(dir) { 34 t.Fatalf("TemplateDir() must return absolute path") 35 } 36 if !strings.Contains(dir, ".github") { 37 t.Fatalf("Invalid template dir path: %v", dir) 38 } 39 } 40 41 func TestInvalidDir(t *testing.T) { 42 if runtime.GOOS == "windows" { 43 t.Skip("because I don't know how to specify 'invalid' directory path on Windows") 44 } 45 os.Setenv("DOT_GITHUB_HOME", "/") 46 defer func() { 47 if r := recover(); r == nil { 48 t.Errorf("Invalid directory must cause panic") 49 } 50 defer os.Setenv("DOT_GITHUB_HOME", "") 51 }() 52 TemplateDir() 53 }