| # In GOPATH mode, module legacy support does path rewriting very similar to vendoring. |
| |
| env GO111MODULE=off |
| |
| go list -f '{{range .Imports}}{{.}}{{"\n"}}{{end}}' old/p1 |
| stdout ^new/p1$ |
| |
| go list -f '{{range .Imports}}{{.}}{{"\n"}}{{end}}' new/p1 |
| stdout ^new/p2$ # not new/v2/p2 |
| ! stdout ^new/v2 |
| stdout ^new/sub/x/v1/y$ # not new/sub/v2/x/v1/y |
| ! stdout ^new/sub/v2 |
| stdout ^new/sub/inner/x # not new/sub/v2/inner/x |
| |
| go build old/p1 new/p1 |
| |
| -- new/go.mod -- |
| module "new/v2" |
| -- new/new.go -- |
| package new |
| |
| import _ "new/v2/p2" |
| -- new/p1/p1.go -- |
| package p1 |
| |
| import _ "old/p2" |
| import _ "new/v2" |
| import _ "new/v2/p2" |
| import _ "new/sub/v2/x/v1/y" // v2 is module, v1 is directory in module |
| import _ "new/sub/inner/x" // new/sub/inner/go.mod overrides new/sub/go.mod |
| -- new/p2/p2.go -- |
| package p2 |
| -- new/sub/go.mod -- |
| module new/sub/v2 |
| -- new/sub/inner/go.mod -- |
| module new/sub/inner |
| -- new/sub/inner/x/x.go -- |
| package x |
| -- new/sub/x/v1/y/y.go -- |
| package y |
| -- old/p1/p1.go -- |
| package p1 |
| |
| import _ "old/p2" |
| import _ "new/p1" |
| import _ "new" |
| -- old/p2/p2.go -- |
| package p2 |