# go/build's Import should find modules by invoking the go command

go build -o $WORK/testimport.exe ./testimport

# GO111MODULE=off
env GO111MODULE=off
! exec $WORK/testimport.exe x/y/z/w .

# GO111MODULE=auto in GOPATH/src
env GO111MODULE=
! exec $WORK/testimport.exe x/y/z/w .
env GO111MODULE=auto
! exec $WORK/testimport.exe x/y/z/w .

# GO111MODULE=auto outside GOPATH/src
cd $GOPATH/other
env GO111MODULE=
exec $WORK/testimport.exe other/x/y/z/w .
stdout w2.go

! exec $WORK/testimport.exe x/y/z/w .
stderr 'cannot find module providing package x/y/z/w'

cd z
env GO111MODULE=auto
exec $WORK/testimport.exe other/x/y/z/w .
stdout w2.go

# GO111MODULE=on outside GOPATH/src
env GO111MODULE=on
exec $WORK/testimport.exe other/x/y/z/w .
stdout w2.go

# GO111MODULE=on in GOPATH/src
cd $GOPATH/src
exec $WORK/testimport.exe x/y/z/w .
stdout w1.go
cd w
exec $WORK/testimport.exe x/y/z/w ..
stdout w1.go

-- go.mod --
module x/y/z

-- z.go --
package z

-- w/w1.go --
package w

-- testimport/x.go --
package main

import (
	"fmt"
	"go/build"
	"log"
	"os"
	"strings"
)

func main() {
	p, err := build.Import(os.Args[1], os.Args[2], 0)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%s\n%s\n", p.Dir, strings.Join(p.GoFiles, " "))
}

-- $GOPATH/other/go.mod --
module other/x/y

-- $GOPATH/other/z/w/w2.go --
package w
