# Imports
env GO111MODULE=off

# Pass -e to permit errors (e.g. bad.go, invalid.go)
go list -f  '{{.ImportPath}} {{.Imports}}' -e 'vend/...' 'vend/vendor/...' 'vend/x/vendor/...'
cmp stdout want_vendor_imports.txt

-- want_vendor_imports.txt --
vend [vend/vendor/p r]
vend/dir1 []
vend/hello [fmt vend/vendor/strings]
vend/subdir [vend/vendor/p r]
vend/x [vend/x/vendor/p vend/vendor/q vend/x/vendor/r vend/dir1 vend/vendor/vend/dir1/dir2]
vend/x/invalid [vend/x/invalid/vendor/foo]
vend/vendor/p []
vend/vendor/q []
vend/vendor/strings []
vend/vendor/vend/dir1/dir2 []
vend/x/vendor/p []
vend/x/vendor/p/p [notfound]
vend/x/vendor/r []
-- vend/bad.go --
package vend

import _ "r"
-- vend/dir1/dir1.go --
package dir1
-- vend/good.go --
package vend

import _ "p"
-- vend/hello/hello.go --
package main

import (
	"fmt"
	"strings" // really ../vendor/strings
)

func main() {
	fmt.Printf("%s\n", strings.Msg)
}
-- vend/hello/hello_test.go --
package main

import (
	"strings" // really ../vendor/strings
	"testing"
)

func TestMsgInternal(t *testing.T) {
	if strings.Msg != "hello, world" {
		t.Fatalf("unexpected msg: %v", strings.Msg)
	}
}
-- vend/hello/hellox_test.go --
package main_test

import (
	"strings" // really ../vendor/strings
	"testing"
)

func TestMsgExternal(t *testing.T) {
	if strings.Msg != "hello, world" {
		t.Fatalf("unexpected msg: %v", strings.Msg)
	}
}
-- vend/subdir/bad.go --
package subdir

import _ "r"
-- vend/subdir/good.go --
package subdir

import _ "p"
-- vend/vendor/p/p.go --
package p
-- vend/vendor/q/q.go --
package q
-- vend/vendor/strings/msg.go --
package strings

var Msg = "hello, world"
-- vend/vendor/vend/dir1/dir2/dir2.go --
package dir2
-- vend/x/invalid/invalid.go --
package invalid

import "vend/x/invalid/vendor/foo"
-- vend/x/vendor/p/p/p.go --
package p

import _ "notfound"
-- vend/x/vendor/p/p.go --
package p
-- vend/x/vendor/r/r.go --
package r
-- vend/x/x.go --
package x

import _ "p"
import _ "q"
import _ "r"
import _ "vend/dir1"      // not vendored
import _ "vend/dir1/dir2" // vendored
