github.com/jdolitsky/cnab-go@v0.7.1-beta1/driver/command/command_test.go (about) 1 package command 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "os" 7 "strings" 8 "testing" 9 10 "github.com/deislabs/cnab-go/driver" 11 ) 12 13 var _ driver.Driver = &Driver{} 14 15 func TestCheckDriverExists(t *testing.T) { 16 name := "missing-driver" 17 cmddriver := &Driver{Name: name} 18 if cmddriver.CheckDriverExists() { 19 t.Errorf("Expected driver %s not to exist", name) 20 } 21 22 name = "existing-driver" 23 testfunc := func(t *testing.T, cmddriver *Driver) { 24 if !cmddriver.CheckDriverExists() { 25 t.Fatalf("Expected driver %s to exist", cmddriver.Name) 26 } 27 28 } 29 CreateAndRunTestCommandDriver(t, name, "", testfunc) 30 } 31 func CreateAndRunTestCommandDriver(t *testing.T, name string, content string, testfunc func(t *testing.T, d *Driver)) { 32 cmddriver := &Driver{Name: name} 33 dirname, err := ioutil.TempDir("", "cnab") 34 if err != nil { 35 t.Fatal(err) 36 } 37 38 defer os.RemoveAll(dirname) 39 filename := fmt.Sprintf("%s/cnab-%s", dirname, name) 40 newfile, err := os.Create(filename) 41 if err != nil { 42 t.Fatal(err) 43 } 44 45 if len(content) > 0 { 46 newfile.WriteString(content) 47 } 48 49 newfile.Chmod(0755) 50 newfile.Close() 51 path := os.Getenv("PATH") 52 pathlist := []string{dirname, path} 53 newpath := strings.Join(pathlist, string(os.PathListSeparator)) 54 defer os.Setenv("PATH", path) 55 os.Setenv("PATH", newpath) 56 testfunc(t, cmddriver) 57 }