[short] skip env GO111MODULE=on # 'go get' outside a module prints an error. ! go get example.com/cmd/a stderr '^go: go.mod file not found in current directory or any parent directory.$' stderr '^\t''go get'' is no longer supported outside a module.$' cp go.mod.orig go.mod # 'go get' inside a module with a non-main package does not print a message. # This will stop building in the future, but it's the command we want to use. go get rsc.io/quote ! stderr deprecated ! stderr 'no longer installs' cp go.mod.orig go.mod # 'go get' inside a module with an executable does not print a message. # In 1.16 and 1.17, 'go get' did print a message in this case suggesting the # use of -d. In 1.18, -d is a no-op, and we'd like to begin discouraging # its use. go get example.com/cmd/a ! stderr deprecated ! stderr 'no longer installs' cp go.mod.orig go.mod # 'go get' should not print a warning for a main package inside the main module. # The intent is most likely to update the dependencies of that package. # 'go install' would be used otherwise. go get m ! stderr . cp go.mod.orig go.mod -- go.mod.orig -- module m go 1.17 -- main.go -- package main func main() {}