github.com/raarceoml/godog@v0.7.9/builder_go111_test.go (about) 1 // +build go1.11 2 3 package godog 4 5 import ( 6 "bytes" 7 "os" 8 "os/exec" 9 "path/filepath" 10 "testing" 11 ) 12 13 func TestGodogBuildWithModuleOutsideGopath(t *testing.T) { 14 dir := filepath.Join(os.TempDir(), "godogs") 15 err := buildTestPackage(dir, map[string]string{ 16 "godogs.feature": builderFeatureFile, 17 "godogs.go": builderMainCodeFile, 18 "godogs_test.go": builderTestFile, 19 }) 20 if err != nil { 21 os.RemoveAll(dir) 22 t.Fatal(err) 23 } 24 defer os.RemoveAll(dir) 25 26 prevDir, err := os.Getwd() 27 if err != nil { 28 t.Fatal(err) 29 } 30 31 if err := os.Chdir(dir); err != nil { 32 t.Fatal(err) 33 } 34 defer os.Chdir(prevDir) 35 36 if out, err := exec.Command("go", "mod", "init", "godogs").CombinedOutput(); err != nil { 37 t.Log(string(out)) 38 t.Fatal(err) 39 } 40 41 var stdout, stderr bytes.Buffer 42 cmd := buildTestCommand(t, "godogs.feature") 43 cmd.Stdout = &stdout 44 cmd.Stderr = &stderr 45 cmd.Env = os.Environ() 46 47 if err := cmd.Run(); err != nil { 48 t.Log(stdout.String()) 49 t.Log(stderr.String()) 50 t.Fatal(err) 51 } 52 } 53 54 func TestGodogBuildWithModuleOutsideGopathWithXTest(t *testing.T) { 55 dir := filepath.Join(os.TempDir(), "godogs") 56 err := buildTestPackage(dir, map[string]string{ 57 "godogs.feature": builderFeatureFile, 58 "godogs.go": builderMainCodeFile, 59 "godogs_test.go": builderXTestFile, 60 }) 61 if err != nil { 62 os.RemoveAll(dir) 63 t.Fatal(err) 64 } 65 defer os.RemoveAll(dir) 66 67 prevDir, err := os.Getwd() 68 if err != nil { 69 t.Fatal(err) 70 } 71 72 if err := os.Chdir(dir); err != nil { 73 t.Fatal(err) 74 } 75 defer os.Chdir(prevDir) 76 77 if out, err := exec.Command("go", "mod", "init", "godogs").CombinedOutput(); err != nil { 78 t.Log(string(out)) 79 t.Fatal(err) 80 } 81 82 var stdout, stderr bytes.Buffer 83 cmd := buildTestCommand(t, "godogs.feature") 84 cmd.Stdout = &stdout 85 cmd.Stderr = &stderr 86 cmd.Env = os.Environ() 87 88 if err := cmd.Run(); err != nil { 89 t.Log(stdout.String()) 90 t.Log(stderr.String()) 91 t.Fatal(err) 92 } 93 } 94 95 func TestGodogBuildWithModuleInsideGopath(t *testing.T) { 96 gopath := filepath.Join(os.TempDir(), "_gp") 97 dir := filepath.Join(gopath, "src", "godogs") 98 err := buildTestPackage(dir, map[string]string{ 99 "godogs.feature": builderFeatureFile, 100 "godogs.go": builderMainCodeFile, 101 "godogs_test.go": builderTestFile, 102 }) 103 if err != nil { 104 os.RemoveAll(gopath) 105 t.Fatal(err) 106 } 107 defer os.RemoveAll(gopath) 108 109 prevDir, err := os.Getwd() 110 if err != nil { 111 t.Fatal(err) 112 } 113 114 if err := os.Chdir(dir); err != nil { 115 t.Fatal(err) 116 } 117 defer os.Chdir(prevDir) 118 119 c := exec.Command("go", "mod", "init", "godogs") 120 c.Env = os.Environ() 121 c.Env = append(c.Env, "GOPATH="+gopath) 122 c.Env = append(c.Env, "GO111MODULE=on") 123 if out, err := c.CombinedOutput(); err != nil { 124 t.Log(string(out)) 125 t.Fatal(err) 126 } 127 128 var stdout, stderr bytes.Buffer 129 cmd := buildTestCommand(t, "godogs.feature") 130 cmd.Stdout = &stdout 131 cmd.Stderr = &stderr 132 cmd.Env = os.Environ() 133 cmd.Env = append(cmd.Env, "GOPATH="+gopath) 134 cmd.Env = append(cmd.Env, "GO111MODULE=on") 135 136 if err := cmd.Run(); err != nil { 137 t.Log(stdout.String()) 138 t.Log(stderr.String()) 139 t.Fatal(err) 140 } 141 }