diff --git a/builder_go112_test.go b/builder_go112_test.go new file mode 100644 index 0000000..867a2b6 --- /dev/null +++ b/builder_go112_test.go @@ -0,0 +1,60 @@ +// +build go1.12 +// +build !go1.13 + +package godog + +import ( + "bytes" + "os" + "path/filepath" + "testing" +) + +func TestGodogBuildWithVendoredGodogAndMod(t *testing.T) { + gopath := filepath.Join(os.TempDir(), "_gpc") + dir := filepath.Join(gopath, "src", "godogs") + err := buildTestPackage(dir, map[string]string{ + "godogs.feature": builderFeatureFile, + "godogs.go": builderMainCodeFile, + "godogs_test.go": builderTestFile, + "go.mod": builderModFile, + }) + if err != nil { + os.RemoveAll(gopath) + t.Fatal(err) + } + defer os.RemoveAll(gopath) + + pkg := filepath.Join(dir, "vendor", "github.com", "cucumber") + if err := os.MkdirAll(pkg, 0755); err != nil { + t.Fatal(err) + } + + prevDir, err := os.Getwd() + if err != nil { + t.Fatal(err) + } + + // symlink godog package + if err := os.Symlink(prevDir, filepath.Join(pkg, "godog")); err != nil { + t.Fatal(err) + } + + if err := os.Chdir(dir); err != nil { + t.Fatal(err) + } + defer os.Chdir(prevDir) + + cmd := buildTestCommand(t, "godogs.feature") + + var stdout, stderr bytes.Buffer + cmd.Stdout = &stdout + cmd.Stderr = &stderr + cmd.Env = append(envVarsWithoutGopath(), "GOPATH="+gopath) + + if err := cmd.Run(); err != nil { + t.Log(stdout.String()) + t.Log(stderr.String()) + t.Fatal(err) + } +} diff --git a/builder_go113_test.go b/builder_go113_test.go new file mode 100644 index 0000000..9c881c3 --- /dev/null +++ b/builder_go113_test.go @@ -0,0 +1,54 @@ +// +build go1.13 + +package godog + +import ( + "bytes" + "os" + "os/exec" + "path/filepath" + "testing" +) + +func TestGodogBuildWithVendoredGodogAndMod(t *testing.T) { + gopath := filepath.Join(os.TempDir(), "_gpc") + dir := filepath.Join(gopath, "src", "godogs") + err := buildTestPackage(dir, map[string]string{ + "godogs.feature": builderFeatureFile, + "godogs.go": builderMainCodeFile, + "godogs_test.go": builderTestFile, + "go.mod": builderModFile, + }) + 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 = exec.Command("go", "mod", "vendor").Run(); err != nil { + t.Fatal(err) + } + + if err := os.Chdir(dir); err != nil { + t.Fatal(err) + } + defer os.Chdir(prevDir) + + cmd := buildTestCommand(t, "godogs.feature") + + var stdout, stderr bytes.Buffer + cmd.Stdout = &stdout + cmd.Stderr = &stderr + cmd.Env = append(envVarsWithoutGopath(), "GOPATH="+gopath) + + if err := cmd.Run(); err != nil { + t.Log(stdout.String()) + t.Log(stderr.String()) + t.Fatal(err) + } +} diff --git a/builder_test.go b/builder_test.go index 6e877f8..f623bd8 100644 --- a/builder_test.go +++ b/builder_test.go @@ -310,49 +310,6 @@ func TestGodogBuildWithinGopath(t *testing.T) { } } -func TestGodogBuildWithVendoredGodogAndMod(t *testing.T) { - gopath := filepath.Join(os.TempDir(), "_gpc") - dir := filepath.Join(gopath, "src", "godogs") - err := buildTestPackage(dir, map[string]string{ - "godogs.feature": builderFeatureFile, - "godogs.go": builderMainCodeFile, - "godogs_test.go": builderTestFile, - "go.mod": builderModFile, - }) - 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 = exec.Command("go", "mod", "vendor").Run(); err != nil { - t.Fatal(err) - } - - if err := os.Chdir(dir); err != nil { - t.Fatal(err) - } - defer os.Chdir(prevDir) - - cmd := buildTestCommand(t, "godogs.feature") - - var stdout, stderr bytes.Buffer - cmd.Stdout = &stdout - cmd.Stderr = &stderr - cmd.Env = append(envVarsWithoutGopath(), "GOPATH="+gopath) - - if err := cmd.Run(); err != nil { - t.Log(stdout.String()) - t.Log(stderr.String()) - t.Fatal(err) - } -} - func TestGodogBuildWithVendoredGodogWithoutModule(t *testing.T) { gopath := filepath.Join(os.TempDir(), "_gp") dir := filepath.Join(gopath, "src", "godogs")