github.com/kamontat/dot-github@v1.2.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  }