| env GO111MODULE=on |
| [short] skip |
| |
| cd m |
| |
| # 'go list all' should list all of the packages used (directly or indirectly) by |
| # the packages in the main module, but no other packages from the standard |
| # library or active modules. |
| # |
| # 'go list ...' should list packages in all active modules and the standard library. |
| # |
| # 'go list example.com/m/...' should list packages in all modules that begin with 'example.com/m/'. |
| # |
| # 'go list ./...' should list only packages in the current module, not other active modules. |
| # |
| # Warnings about unmatched patterns should only be printed once. |
| # |
| # And the go command should be able to keep track of all this! |
| go list -f '{{.ImportPath}}: {{.Match}}' all ... example.com/m/... ./... ./xyz... |
| stdout 'example.com/m/useunicode: \[all \.\.\. example.com/m/... ./...\]' |
| stdout 'example.com/m/useunsafe: \[all \.\.\. example.com/m/... ./...\]' |
| [cgo] stdout 'example.com/m/useC: \[all \.\.\. example.com/m/... ./...\]' |
| [!cgo] ! stdout example.com/m/useC |
| stdout 'example.com/unused/useerrors: \[\.\.\.\]' # but not "all" |
| stdout 'example.com/m/nested/useencoding: \[\.\.\. example.com/m/...\]' # but NOT "all" or "./..." |
| stdout '^unicode: \[all \.\.\.\]' |
| stdout '^unsafe: \[all \.\.\.\]' |
| stdout 'index/suffixarray: \[\.\.\.\]' |
| stdout 'cmd/pprof: \[\.\.\.\]' |
| |
| stderr -count=1 '^go: warning: "./xyz..." matched no packages$' |
| |
| # 'go list ./...' should not try to resolve the main module. |
| cd ../empty |
| go list -deps ./... |
| ! stdout . |
| ! stderr 'finding' |
| stderr -count=1 '^go: warning: "./..." matched no packages' |
| |
| # disabling cgo should drop useC |
| [short] skip |
| env CGO_ENABLED=0 |
| go list -f '{{.ImportPath}}: {{.Match}}' all ... example.com/m/... ./... ./xyz... |
| ! stdout example.com/m/useC |
| |
| -- m/go.mod -- |
| module example.com/m |
| |
| require example.com/unused v0.0.0 // indirect |
| replace example.com/unused => ../unused |
| |
| require example.com/m/nested v0.0.0 // indirect |
| replace example.com/m/nested => ../nested |
| |
| -- m/useC/useC.go -- |
| package useC |
| import _ "C" // "C" is a pseudo-package, not an actual one |
| -- m/useunicode/useunicode.go -- |
| package useunicode |
| import _ "unicode" |
| -- m/useunsafe/useunsafe.go -- |
| package useunsafe |
| import _ "unsafe" |
| |
| -- unused/go.mod -- |
| module example.com/unused |
| -- unused/useerrors/useerrors.go -- |
| package useerrors |
| import _ "errors" |
| |
| -- nested/go.mod -- |
| module example.com/m/nested |
| -- nested/useencoding/useencoding.go -- |
| package useencoding |
| import _ "encoding" |
| |
| -- empty/go.mod -- |
| module example.com/empty |