[!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"
