| # Regression test for https://go.dev/issue/51125: |
| # Relative import paths (a holdover from GOPATH) were accidentally allowed in module mode. |
| |
| cd $WORK |
| |
| # Relative imports should not be allowed with a go.mod file. |
| |
| ! go run driver.go |
| stderr '^driver.go:3:8: "./mypkg" is relative, but relative import paths are not supported in module mode$' |
| |
| go list -e -f '{{with .Error}}{{.}}{{end}}' -deps driver.go |
| stdout '^driver.go:3:8: "./mypkg" is relative, but relative import paths are not supported in module mode$' |
| ! stderr . |
| |
| |
| # Relative imports should not be allowed in module mode even without a go.mod file. |
| rm go.mod |
| |
| ! go run driver.go |
| stderr '^driver.go:3:8: "./mypkg" is relative, but relative import paths are not supported in module mode$' |
| |
| go list -e -f '{{with .Error}}{{.}}{{end}}' -deps driver.go |
| stdout '^driver.go:3:8: "./mypkg" is relative, but relative import paths are not supported in module mode$' |
| ! stderr . |
| |
| |
| # In GOPATH mode, they're still allowed (but only outside of GOPATH/src). |
| env GO111MODULE=off |
| |
| [!short] go run driver.go |
| |
| go list -deps driver.go |
| |
| |
| -- $WORK/go.mod -- |
| module example |
| |
| go 1.17 |
| -- $WORK/driver.go -- |
| package main |
| |
| import "./mypkg" |
| |
| func main() { |
| mypkg.MyFunc() |
| } |
| -- $WORK/mypkg/code.go -- |
| package mypkg |
| |
| import "fmt" |
| |
| func MyFunc() { |
| fmt.Println("Hello, world!") |
| } |