if godog package is not a module, make sure it is installed

Этот коммит содержится в:
gedi 2018-11-12 11:46:11 +02:00
родитель d3842ecb6a
коммит 34d2595d5b
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 56604CDCCC201556
3 изменённых файлов: 60 добавлений и 7 удалений

Просмотреть файл

@ -161,6 +161,16 @@ func Build(bin string) error {
return err
}
if !isModule(godogImportPath, mods) {
// must make sure that package is installed
// modules are installed on download
cmd := exec.Command("go", "install", "-i", godogPkg.ImportPath)
cmd.Env = os.Environ()
if out, err := cmd.CombinedOutput(); err != nil {
return fmt.Errorf("failed to install godog package: %s, reason: %v", string(out), err)
}
}
// compile godog testmain package archive
// we do not depend on CGO so a lot of checks are not necessary
testMainPkgOut := filepath.Join(testdir, "main.a")
@ -488,3 +498,17 @@ func readModules() []*module {
}
return mods
}
func isModule(name string, mods []*module) bool {
if mods == nil {
return false
}
for _, mod := range mods {
if pkg := mod.match(name); pkg != nil {
return true
}
}
return false
}

Просмотреть файл

@ -11,8 +11,13 @@ import (
)
func TestGodogBuildWithModuleOutsideGopath(t *testing.T) {
_, err := exec.LookPath("godog")
if err != nil {
t.SkipNow() // no command installed
}
dir := filepath.Join(os.TempDir(), "godogs")
err := buildTestPackage(dir, builderFeatureFile, builderMainCodeFile, builderTestFile)
err = buildTestPackage(dir, builderFeatureFile, builderMainCodeFile, builderTestFile)
if err != nil {
os.RemoveAll(dir)
t.Fatal(err)
@ -48,9 +53,13 @@ func TestGodogBuildWithModuleOutsideGopath(t *testing.T) {
}
func TestGodogBuildWithModuleInsideGopath(t *testing.T) {
_, err := exec.LookPath("godog")
if err != nil {
t.SkipNow() // no command installed
}
gopath := filepath.Join(os.TempDir(), "_gp")
dir := filepath.Join(gopath, "src", "godogs")
err := buildTestPackage(dir, builderFeatureFile, builderMainCodeFile, builderTestFile)
err = buildTestPackage(dir, builderFeatureFile, builderMainCodeFile, builderTestFile)
if err != nil {
os.RemoveAll(gopath)
t.Fatal(err)

Просмотреть файл

@ -92,8 +92,12 @@ func buildTestPackage(dir, feat, src, testSrc string) error {
}
func TestGodogBuildWithSourceNotInGoPath(t *testing.T) {
_, err := exec.LookPath("godog")
if err != nil {
t.SkipNow() // no command installed
}
dir := filepath.Join(os.TempDir(), "godogs")
err := buildTestPackage(dir, builderFeatureFile, builderMainCodeFile, builderTestFile)
err = buildTestPackage(dir, builderFeatureFile, builderMainCodeFile, builderTestFile)
if err != nil {
os.RemoveAll(dir)
t.Fatal(err)
@ -124,8 +128,12 @@ func TestGodogBuildWithSourceNotInGoPath(t *testing.T) {
}
func TestGodogBuildWithoutSourceNotInGoPath(t *testing.T) {
_, err := exec.LookPath("godog")
if err != nil {
t.SkipNow() // no command installed
}
dir := filepath.Join(os.TempDir(), "godogs")
err := buildTestPackage(dir, builderFeatureFile, "", "")
err = buildTestPackage(dir, builderFeatureFile, "", "")
if err != nil {
os.RemoveAll(dir)
t.Fatal(err)
@ -156,8 +164,12 @@ func TestGodogBuildWithoutSourceNotInGoPath(t *testing.T) {
}
func TestGodogBuildWithoutTestSourceNotInGoPath(t *testing.T) {
_, err := exec.LookPath("godog")
if err != nil {
t.SkipNow() // no command installed
}
dir := filepath.Join(os.TempDir(), "godogs")
err := buildTestPackage(dir, builderFeatureFile, builderMainCodeFile, "")
err = buildTestPackage(dir, builderFeatureFile, builderMainCodeFile, "")
if err != nil {
os.RemoveAll(dir)
t.Fatal(err)
@ -188,9 +200,13 @@ func TestGodogBuildWithoutTestSourceNotInGoPath(t *testing.T) {
}
func TestGodogBuildWithinGopath(t *testing.T) {
_, err := exec.LookPath("godog")
if err != nil {
t.SkipNow() // no command installed
}
gopath := filepath.Join(os.TempDir(), "_gp")
dir := filepath.Join(gopath, "src", "godogs")
err := buildTestPackage(dir, builderFeatureFile, builderMainCodeFile, builderTestFile)
err = buildTestPackage(dir, builderFeatureFile, builderMainCodeFile, builderTestFile)
if err != nil {
os.RemoveAll(gopath)
t.Fatal(err)
@ -233,9 +249,13 @@ func TestGodogBuildWithinGopath(t *testing.T) {
}
func TestGodogBuildWithVendoredGodog(t *testing.T) {
_, err := exec.LookPath("godog")
if err != nil {
t.SkipNow() // no command installed
}
gopath := filepath.Join(os.TempDir(), "_gp")
dir := filepath.Join(gopath, "src", "godogs")
err := buildTestPackage(dir, builderFeatureFile, builderMainCodeFile, builderTestFile)
err = buildTestPackage(dir, builderFeatureFile, builderMainCodeFile, builderTestFile)
if err != nil {
os.RemoveAll(gopath)
t.Fatal(err)