github.com/leviable/godog@v0.8.2/builder_go111_test.go (about) 1 // +build go1.11 2 3 package godog 4 5 import ( 6 "bytes" 7 "fmt" 8 "os" 9 "os/exec" 10 "path/filepath" 11 "testing" 12 ) 13 14 func TestGodogBuildWithModuleOutsideGopathAndHavingOnlyFeature(t *testing.T) { 15 dir := filepath.Join(os.TempDir(), "godogs") 16 err := buildTestPackage(dir, map[string]string{ 17 "godogs.feature": builderFeatureFile, 18 }) 19 if err != nil { 20 os.RemoveAll(dir) 21 t.Fatal(err) 22 } 23 defer os.RemoveAll(dir) 24 25 prevDir, err := os.Getwd() 26 if err != nil { 27 t.Fatal(err) 28 } 29 30 if err := os.Chdir(dir); err != nil { 31 t.Fatal(err) 32 } 33 defer os.Chdir(prevDir) 34 35 if out, err := exec.Command("go", "mod", "init", "godogs").CombinedOutput(); err != nil { 36 t.Log(string(out)) 37 t.Fatal(err) 38 } 39 40 if out, err := exec.Command("go", "mod", "edit", "-require", fmt.Sprintf("github.com/leviable/godog@%s", Version)).CombinedOutput(); err != nil { 41 t.Log(string(out)) 42 t.Fatal(err) 43 } 44 45 var stdout, stderr bytes.Buffer 46 cmd := buildTestCommand(t, "godogs.feature") 47 cmd.Stdout = &stdout 48 cmd.Stderr = &stderr 49 cmd.Env = os.Environ() 50 51 if err := cmd.Run(); err != nil { 52 t.Log(stdout.String()) 53 t.Log(stderr.String()) 54 t.Fatal(err) 55 } 56 } 57 58 func TestGodogBuildWithModuleOutsideGopath(t *testing.T) { 59 dir := filepath.Join(os.TempDir(), "godogs") 60 err := buildTestPackage(dir, map[string]string{ 61 "godogs.feature": builderFeatureFile, 62 "godogs.go": builderMainCodeFile, 63 "godogs_test.go": builderTestFile, 64 }) 65 if err != nil { 66 os.RemoveAll(dir) 67 t.Fatal(err) 68 } 69 defer os.RemoveAll(dir) 70 71 prevDir, err := os.Getwd() 72 if err != nil { 73 t.Fatal(err) 74 } 75 76 if err := os.Chdir(dir); err != nil { 77 t.Fatal(err) 78 } 79 defer os.Chdir(prevDir) 80 81 if out, err := exec.Command("go", "mod", "init", "godogs").CombinedOutput(); err != nil { 82 t.Log(string(out)) 83 t.Fatal(err) 84 } 85 86 var stdout, stderr bytes.Buffer 87 cmd := buildTestCommand(t, "godogs.feature") 88 cmd.Stdout = &stdout 89 cmd.Stderr = &stderr 90 cmd.Env = os.Environ() 91 92 if err := cmd.Run(); err != nil { 93 t.Log(stdout.String()) 94 t.Log(stderr.String()) 95 t.Fatal(err) 96 } 97 } 98 99 func TestGodogBuildWithModuleWithXTestOutsideGopath(t *testing.T) { 100 dir := filepath.Join(os.TempDir(), "godogs") 101 err := buildTestPackage(dir, map[string]string{ 102 "godogs.feature": builderFeatureFile, 103 "godogs.go": builderMainCodeFile, 104 "godogs_test.go": builderXTestFile, 105 }) 106 if err != nil { 107 os.RemoveAll(dir) 108 t.Fatal(err) 109 } 110 defer os.RemoveAll(dir) 111 112 prevDir, err := os.Getwd() 113 if err != nil { 114 t.Fatal(err) 115 } 116 117 if err := os.Chdir(dir); err != nil { 118 t.Fatal(err) 119 } 120 defer os.Chdir(prevDir) 121 122 if out, err := exec.Command("go", "mod", "init", "godogs").CombinedOutput(); err != nil { 123 t.Log(string(out)) 124 t.Fatal(err) 125 } 126 127 var stdout, stderr bytes.Buffer 128 cmd := buildTestCommand(t, "godogs.feature") 129 cmd.Stdout = &stdout 130 cmd.Stderr = &stderr 131 cmd.Env = os.Environ() 132 133 if err := cmd.Run(); err != nil { 134 t.Log(stdout.String()) 135 t.Log(stderr.String()) 136 t.Fatal(err) 137 } 138 } 139 140 func TestGodogBuildWithModuleInsideGopath(t *testing.T) { 141 gopath := filepath.Join(os.TempDir(), "_gp") 142 dir := filepath.Join(gopath, "src", "godogs") 143 err := buildTestPackage(dir, map[string]string{ 144 "godogs.feature": builderFeatureFile, 145 "godogs.go": builderMainCodeFile, 146 "godogs_test.go": builderTestFile, 147 }) 148 if err != nil { 149 os.RemoveAll(gopath) 150 t.Fatal(err) 151 } 152 defer os.RemoveAll(gopath) 153 154 prevDir, err := os.Getwd() 155 if err != nil { 156 t.Fatal(err) 157 } 158 159 if err := os.Chdir(dir); err != nil { 160 t.Fatal(err) 161 } 162 defer os.Chdir(prevDir) 163 164 c := exec.Command("go", "mod", "init", "godogs") 165 c.Env = os.Environ() 166 c.Env = append(c.Env, "GOPATH="+gopath) 167 c.Env = append(c.Env, "GO111MODULE=on") 168 if out, err := c.CombinedOutput(); err != nil { 169 t.Log(string(out)) 170 t.Fatal(err) 171 } 172 173 var stdout, stderr bytes.Buffer 174 cmd := buildTestCommand(t, "godogs.feature") 175 cmd.Stdout = &stdout 176 cmd.Stderr = &stderr 177 cmd.Env = os.Environ() 178 cmd.Env = append(cmd.Env, "GOPATH="+gopath) 179 cmd.Env = append(cmd.Env, "GO111MODULE=on") 180 181 if err := cmd.Run(); err != nil { 182 t.Log(stdout.String()) 183 t.Log(stderr.String()) 184 t.Fatal(err) 185 } 186 }