github.com/maps90/godog@v0.7.5-0.20170923143419-0093943021d4/builder_test.go (about) 1 package godog 2 3 import ( 4 "go/build" 5 "os" 6 "path/filepath" 7 "reflect" 8 "testing" 9 ) 10 11 func TestVendorPaths(t *testing.T) { 12 gopaths = []string{"/go"} 13 14 type Case struct { 15 dir string 16 expect []string 17 } 18 19 cases := []Case{ 20 {"/go", []string{}}, 21 {"/go/src", []string{}}, 22 {"/go/src/project", []string{"/go/src/project/vendor"}}, 23 {"/go/src/party/project", []string{"/go/src/party/project/vendor", "/go/src/party/vendor"}}, 24 } 25 26 for i, c := range cases { 27 actual := maybeVendorPaths(c.dir) 28 var expect []string 29 for _, s := range c.expect { 30 expect = append(expect, filepath.Join(s, godogImportPath)) 31 } 32 if !reflect.DeepEqual(expect, actual) { 33 t.Fatalf("case %d expected %+v, got %+v", i, expect, actual) 34 } 35 } 36 37 gopaths = filepath.SplitList(build.Default.GOPATH) 38 } 39 40 func TestBuildTestRunner(t *testing.T) { 41 bin := filepath.Join(os.TempDir(), "godog.test") 42 if err := Build(bin); err != nil { 43 t.Fatalf("failed to build godog test binary: %v", err) 44 } 45 os.Remove(bin) 46 } 47 48 func TestBuildTestRunnerWithoutGoFiles(t *testing.T) { 49 bin := filepath.Join(os.TempDir(), "godog.test") 50 pwd, err := os.Getwd() 51 if err != nil { 52 t.Fatalf("failed to get working directory: %v", err) 53 } 54 55 wd := filepath.Join(pwd, "features") 56 if err := os.Chdir(wd); err != nil { 57 t.Fatalf("failed to change working directory: %v", err) 58 } 59 60 defer func() { 61 os.Chdir(pwd) // get back to current dir 62 }() 63 64 if err := Build(bin); err != nil { 65 t.Fatalf("failed to build godog test binary: %v", err) 66 } 67 os.Remove(bin) 68 }