# When all versions are replaced, we should not look up a deprecation message. # We will still look up a deprecation message for the replacement. cp go.mod.allreplaced go.mod go list -m -u -f '{{.Path}}@{{.Version}} <{{.Deprecated}}>{{with .Replace}} => {{.Path}}@{{.Version}} <{{.Deprecated}}>{{end}}' all stdout '^example.com/deprecated/a@v1.0.0 <> => example.com/deprecated/b@v1.0.0 $' # When one version is replaced, we should see a deprecation message. cp go.mod.onereplaced go.mod go list -m -u -f '{{.Path}}@{{.Version}} <{{.Deprecated}}>{{with .Replace}} => {{.Path}}@{{.Version}} <{{.Deprecated}}>{{end}}' all stdout '^example.com/deprecated/a@v1.0.0 => example.com/deprecated/b@v1.0.0 $' # If the replacement is a directory, we won't look that up. cp go.mod.dirreplacement go.mod go list -m -u -f '{{.Path}}@{{.Version}} <{{.Deprecated}}>{{with .Replace}} => {{.Path}}@{{.Version}} <{{.Deprecated}}>{{end}}' all stdout '^example.com/deprecated/a@v1.0.0 <> => ./a@ <>$' # If the latest version of the replacement is replaced, we'll use the content # from that replacement. cp go.mod.latestreplaced go.mod go list -m -u -f '{{.Path}}@{{.Version}} <{{.Deprecated}}>{{with .Replace}} => {{.Path}}@{{.Version}} <{{.Deprecated}}>{{end}}' all stdout '^example.com/deprecated/a@v1.0.0 <> => example.com/deprecated/b@v1.0.0 $' -- go.mod.allreplaced -- module m go 1.17 require example.com/deprecated/a v1.0.0 replace example.com/deprecated/a => example.com/deprecated/b v1.0.0 -- go.mod.onereplaced -- module m go 1.17 require example.com/deprecated/a v1.0.0 replace example.com/deprecated/a v1.0.0 => example.com/deprecated/b v1.0.0 -- go.mod.dirreplacement -- module m go 1.17 require example.com/deprecated/a v1.0.0 replace example.com/deprecated/a => ./a -- go.mod.latestreplaced -- module m go 1.17 require example.com/deprecated/a v1.0.0 replace ( example.com/deprecated/a => example.com/deprecated/b v1.0.0 example.com/deprecated/b v1.9.0 => ./b ) -- go.sum -- example.com/deprecated/b v1.0.0/go.mod h1:b19J9ywRGviY7Nq4aJ1WBJ+A7qUlEY9ihp22yI4/F6M= -- a/go.mod -- module example.com/deprecated/a go 1.17 -- b/go.mod -- // Deprecated: in ./b module example.com/deprecated/b go 1.17