| # Derive module path from import comment. |
| cd $WORK/x |
| exists x.go |
| go mod -init |
| stderr 'module x' |
| |
| # Import comment works even with CRLF line endings. |
| rm go.mod |
| addcrlf x.go |
| go mod -init |
| stderr 'module x' |
| |
| # go mod should die in GOPATH if modules are not enabled for GOPATH |
| cd $GOPATH/src/example.com/x/y |
| ! go mod -init |
| stderr 'go: modules disabled inside GOPATH/src by GO111MODULE=auto; see ''go help modules''' |
| |
| env GO111MODULE=on |
| |
| # Derive module path from location inside GOPATH. |
| cd $GOPATH/src/example.com/x/y |
| go mod -init |
| stderr 'module example.com/x/y$' |
| rm go.mod |
| |
| # Module path from Godeps/Godeps.json overrides GOPATH. |
| cd $GOPATH/src/example.com/x/y/z |
| go mod -init |
| stderr 'unexpected.com/z' |
| rm go.mod |
| |
| # Empty directory outside GOPATH fails. |
| mkdir $WORK/empty |
| cd $WORK/empty |
| ! go mod -init |
| stderr 'cannot determine module path for source directory' |
| rm go.mod |
| |
| # Empty directory inside GOPATH/src uses location inside GOPATH. |
| mkdir $GOPATH/src/empty |
| cd $GOPATH/src/empty |
| go mod -init |
| stderr 'empty' |
| rm go.mod |
| |
| [!symlink] stop |
| |
| # gplink1/src/empty where gopathlink -> GOPATH |
| symlink $WORK/gopathlink -> gopath |
| cd $WORK/gopathlink/src/empty |
| go mod -init |
| rm go.mod |
| |
| # GOPATH/src/link where link -> out of GOPATH |
| symlink $GOPATH/src/link -> $WORK/empty |
| cd $WORK/empty |
| ! go mod -init |
| cd $GOPATH/src/link |
| go mod -init |
| stderr link |
| rm go.mod |
| |
| # GOPATH/src/empty where GOPATH itself is a symlink |
| env GOPATH=$WORK/gopathlink |
| cd $GOPATH/src/empty |
| go mod -init |
| rm go.mod |
| cd $WORK/gopath/src/empty |
| go mod -init |
| rm go.mod |
| |
| # GOPATH/src/link where GOPATH and link are both symlinks |
| cd $GOPATH/src/link |
| go mod -init |
| stderr link |
| rm go.mod |
| |
| # Too hard: doesn't match unevaluated nor completely evaluated. (Only partially evaluated.) |
| # Whether this works depends on which OS we are running on. |
| # cd $WORK/gopath/src/link |
| # ! go mod -init |
| |
| -- $WORK/x/x.go -- |
| package x // import "x" |
| |
| -- $GOPATH/src/example.com/x/y/y.go -- |
| package y |
| -- $GOPATH/src/example.com/x/y/z/z.go -- |
| package z |
| -- $GOPATH/src/example.com/x/y/z/Godeps/Godeps.json -- |
| {"ImportPath": "unexpected.com/z"} |