[!GOOS:windows] [short] stop 'this test only applies to Windows' env GO111MODULE=off go build run_go.go exec ./run_go$GOEXE $GOPATH $GOPATH/src/vend/hello stdout 'hello, world' -- run_go.go -- package main import ( "fmt" "os" "os/exec" "path/filepath" "strings" ) func changeVolume(s string, f func(s string) string) string { vol := filepath.VolumeName(s) return f(vol) + s[len(vol):] } func main() { gopath := changeVolume(os.Args[1], strings.ToLower) dir := changeVolume(os.Args[2], strings.ToUpper) cmd := exec.Command("go", "run", "hello.go") cmd.Dir = dir cmd.Env = append(os.Environ(), "GOPATH="+gopath) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr if err := cmd.Run(); err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } } -- vend/hello/hello.go -- package main import ( "fmt" "strings" // really ../vendor/strings ) func main() { fmt.Printf("%s\n", strings.Msg) } -- vend/vendor/strings/msg.go -- package strings var Msg = "hello, world"