# 'go list -mod=vendor -retracted' reports an error. go mod vendor ! go list -m -retracted -mod=vendor stderr '^go list -retracted cannot be used when vendoring is enabled$' rm vendor # 'go list -retracted' reports an error in GOPATH mode. env GO111MODULE=off ! go list -retracted stderr '^go list -retracted can only be used in module-aware mode$' env GO111MODULE= # 'go list pkg' does not show retraction. go list -f '{{with .Module}}{{with .Retracted}}retracted{{end}}{{end}}' example.com/retract ! stdout . # 'go list -retracted pkg' shows retraction. go list -retracted -f '{{with .Module}}{{with .Retracted}}retracted{{end}}{{end}}' example.com/retract stdout retracted # 'go list -m' does not show retraction. go list -m -f '{{with .Retracted}}retracted{{end}}' example.com/retract ! stdout . # 'go list -m -retracted' shows retraction. go list -m -retracted -f '{{with .Retracted}}retracted{{end}}' example.com/retract # 'go list -m mod@version' does not show retraction. go list -m -f '{{with .Retracted}}retracted{{end}}' example.com/retract@v1.0.0-unused ! stdout . # 'go list -m -retracted mod@version' does not show an error if the module # that would contain the retraction is unavailable. See #45305. go list -m -retracted -f '{{.Path}} {{.Version}} {{.Error}}' example.com/retract/missingmod@v1.0.0 stdout '^example.com/retract/missingmod v1.0.0 $' exists $GOPATH/pkg/mod/cache/download/example.com/retract/missingmod/@v/v1.9.0.info ! exists $GOPATH/pkg/mod/cache/download/example.com/retract/missingmod/@v/v1.9.0.mod # 'go list -m -retracted mod@version' shows retractions. go list -m -retracted example.com/retract@v1.0.0-unused stdout '^example.com/retract v1.0.0-unused \(retracted\)$' go list -m -retracted -f '{{with .Retracted}}retracted{{end}}' example.com/retract@v1.0.0-unused stdout retracted # 'go list -m mod@latest' selects a previous release version, not self-retracted latest. go list -m -f '{{.Version}}{{with .Retracted}} retracted{{end}}' example.com/retract/self/prev@latest stdout '^v1.1.0$' # 'go list -m -retracted mod@latest' selects the self-retracted latest version. go list -m -retracted -f '{{.Version}}{{with .Retracted}} retracted{{end}}' example.com/retract/self/prev@latest stdout '^v1.9.0 retracted$' # 'go list -m mod@latest' selects a pre-release version if all release versions are retracted. go list -m -f '{{.Version}}{{with .Retracted}} retracted{{end}}' example.com/retract/self/prerelease@latest stdout '^v1.9.1-pre$' # 'go list -m -retracted mod@latest' selects the self-retracted latest version. go list -m -retracted -f '{{.Version}}{{with .Retracted}} retracted{{end}}' example.com/retract/self/prerelease@latest stdout '^v1.9.0 retracted$' # 'go list -m mod@latest' selects a pseudo-version if all versions are retracted. # TODO(golang.org/issue/24031): the proxy does not expose the pseudo-version, # even if all release versions are retracted. go list -m -e -f '{{.Error.Err}}' example.com/retract/self/pseudo@latest stdout '^module example.com/retract/self/pseudo: no matching versions for query "latest"$' # 'go list -m mod@latest' reports an error if all versions are retracted. go list -m -e -f '{{.Error.Err}}' example.com/retract/self/all@latest stdout '^module example.com/retract/self/all: no matching versions for query "latest"$' # 'go list -m mod@