diff --git a/builder_test.go b/builder_test.go index 359d805..f6c13d0 100644 --- a/builder_test.go +++ b/builder_test.go @@ -187,7 +187,97 @@ func TestGodogBuildWithoutTestSourceNotInGoPath(t *testing.T) { } } +func TestGodogBuildWithinGopath(t *testing.T) { + gopath := filepath.Join(os.TempDir(), "_gp") + dir := filepath.Join(gopath, "src", "godogs") + err := buildTestPackage(dir, builderFeatureFile, builderMainCodeFile, builderTestFile) + if err != nil { + os.RemoveAll(gopath) + t.Fatal(err) + } + defer os.RemoveAll(gopath) + + pkg := filepath.Join(gopath, "src", "github.com", "DATA-DOG") + 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 := exec.Command("godog", "godogs.feature") + + var stdout, stderr bytes.Buffer + cmd.Stdout = &stdout + cmd.Stderr = &stderr + cmd.Env = os.Environ() + cmd.Env = append(cmd.Env, "GOPATH="+gopath) + + if err := cmd.Run(); err != nil { + t.Log(stdout.String()) + t.Log(stderr.String()) + t.Fatal(err) + } +} + func TestGodogBuildWithVendoredGodog(t *testing.T) { + gopath := filepath.Join(os.TempDir(), "_gp") + dir := filepath.Join(gopath, "src", "godogs") + err := buildTestPackage(dir, builderFeatureFile, builderMainCodeFile, builderTestFile) + if err != nil { + os.RemoveAll(gopath) + t.Fatal(err) + } + defer os.RemoveAll(gopath) + + pkg := filepath.Join(dir, "vendor", "github.com", "DATA-DOG") + 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 := exec.Command("godog", "godogs.feature") + + var stdout, stderr bytes.Buffer + cmd.Stdout = &stdout + cmd.Stderr = &stderr + cmd.Env = os.Environ() + cmd.Env = append(cmd.Env, "GOPATH="+gopath) + + 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, builderFeatureFile, builderMainCodeFile, builderTestFile) if err != nil { @@ -206,11 +296,60 @@ func TestGodogBuildWithVendoredGodog(t *testing.T) { } defer os.Chdir(prevDir) - cmd := exec.Command("godog", "godogs.feature") + 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 := exec.Command("godog", "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, builderFeatureFile, builderMainCodeFile, 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 := exec.Command("godog", "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())