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