185 строки
3,9 КиБ
Go
185 строки
3,9 КиБ
Go
// +build go1.11
|
|
|
|
package godog
|
|
|
|
import (
|
|
"bytes"
|
|
"os"
|
|
"os/exec"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestGodogBuildWithModuleOutsideGopathAndHavingOnlyFeature(t *testing.T) {
|
|
dir := filepath.Join(os.TempDir(), "godogs")
|
|
err := buildTestPackage(dir, map[string]string{
|
|
"godogs.feature": builderFeatureFile,
|
|
})
|
|
if err != nil {
|
|
os.RemoveAll(dir)
|
|
t.Fatal(err)
|
|
}
|
|
defer os.RemoveAll(dir)
|
|
|
|
prevDir, err := os.Getwd()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if err := os.Chdir(dir); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer os.Chdir(prevDir)
|
|
|
|
if out, err := exec.Command("go", "mod", "init", "godogs").CombinedOutput(); err != nil {
|
|
t.Log(string(out))
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if out, err := exec.Command("go", "mod", "edit", "-require", "github.com/cucumber/godog@v0.7.12").CombinedOutput(); err != nil {
|
|
t.Log(string(out))
|
|
t.Fatal(err)
|
|
}
|
|
|
|
var stdout, stderr bytes.Buffer
|
|
cmd := buildTestCommand(t, "godogs.feature")
|
|
cmd.Stdout = &stdout
|
|
cmd.Stderr = &stderr
|
|
cmd.Env = os.Environ()
|
|
|
|
if err := cmd.Run(); err != nil {
|
|
t.Log(stdout.String())
|
|
t.Log(stderr.String())
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestGodogBuildWithModuleOutsideGopath(t *testing.T) {
|
|
dir := filepath.Join(os.TempDir(), "godogs")
|
|
err := buildTestPackage(dir, map[string]string{
|
|
"godogs.feature": builderFeatureFile,
|
|
"godogs.go": builderMainCodeFile,
|
|
"godogs_test.go": builderTestFile,
|
|
})
|
|
if err != nil {
|
|
os.RemoveAll(dir)
|
|
t.Fatal(err)
|
|
}
|
|
defer os.RemoveAll(dir)
|
|
|
|
prevDir, err := os.Getwd()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if err := os.Chdir(dir); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer os.Chdir(prevDir)
|
|
|
|
if out, err := exec.Command("go", "mod", "init", "godogs").CombinedOutput(); err != nil {
|
|
t.Log(string(out))
|
|
t.Fatal(err)
|
|
}
|
|
|
|
var stdout, stderr bytes.Buffer
|
|
cmd := buildTestCommand(t, "godogs.feature")
|
|
cmd.Stdout = &stdout
|
|
cmd.Stderr = &stderr
|
|
cmd.Env = os.Environ()
|
|
|
|
if err := cmd.Run(); err != nil {
|
|
t.Log(stdout.String())
|
|
t.Log(stderr.String())
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestGodogBuildWithModuleWithXTestOutsideGopath(t *testing.T) {
|
|
dir := filepath.Join(os.TempDir(), "godogs")
|
|
err := buildTestPackage(dir, map[string]string{
|
|
"godogs.feature": builderFeatureFile,
|
|
"godogs.go": builderMainCodeFile,
|
|
"godogs_test.go": builderXTestFile,
|
|
})
|
|
if err != nil {
|
|
os.RemoveAll(dir)
|
|
t.Fatal(err)
|
|
}
|
|
defer os.RemoveAll(dir)
|
|
|
|
prevDir, err := os.Getwd()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if err := os.Chdir(dir); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer os.Chdir(prevDir)
|
|
|
|
if out, err := exec.Command("go", "mod", "init", "godogs").CombinedOutput(); err != nil {
|
|
t.Log(string(out))
|
|
t.Fatal(err)
|
|
}
|
|
|
|
var stdout, stderr bytes.Buffer
|
|
cmd := buildTestCommand(t, "godogs.feature")
|
|
cmd.Stdout = &stdout
|
|
cmd.Stderr = &stderr
|
|
cmd.Env = os.Environ()
|
|
|
|
if err := cmd.Run(); err != nil {
|
|
t.Log(stdout.String())
|
|
t.Log(stderr.String())
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestGodogBuildWithModuleInsideGopath(t *testing.T) {
|
|
gopath := filepath.Join(os.TempDir(), "_gp")
|
|
dir := filepath.Join(gopath, "src", "godogs")
|
|
err := buildTestPackage(dir, map[string]string{
|
|
"godogs.feature": builderFeatureFile,
|
|
"godogs.go": builderMainCodeFile,
|
|
"godogs_test.go": builderTestFile,
|
|
})
|
|
if err != nil {
|
|
os.RemoveAll(gopath)
|
|
t.Fatal(err)
|
|
}
|
|
defer os.RemoveAll(gopath)
|
|
|
|
prevDir, err := os.Getwd()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if err := os.Chdir(dir); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer os.Chdir(prevDir)
|
|
|
|
c := exec.Command("go", "mod", "init", "godogs")
|
|
c.Env = os.Environ()
|
|
c.Env = append(c.Env, "GOPATH="+gopath)
|
|
c.Env = append(c.Env, "GO111MODULE=on")
|
|
if out, err := c.CombinedOutput(); err != nil {
|
|
t.Log(string(out))
|
|
t.Fatal(err)
|
|
}
|
|
|
|
var stdout, stderr bytes.Buffer
|
|
cmd := buildTestCommand(t, "godogs.feature")
|
|
cmd.Stdout = &stdout
|
|
cmd.Stderr = &stderr
|
|
cmd.Env = os.Environ()
|
|
cmd.Env = append(cmd.Env, "GOPATH="+gopath)
|
|
cmd.Env = append(cmd.Env, "GO111MODULE=on")
|
|
|
|
if err := cmd.Run(); err != nil {
|
|
t.Log(stdout.String())
|
|
t.Log(stderr.String())
|
|
t.Fatal(err)
|
|
}
|
|
}
|