# Verifies golang.org/issue/47738. # In this test, the user has rewritten their imports to use rsc.io/quote/v3, # but their go.mod still requires rsc.io/quote@v1.5.2, and they indirectly # require rsc.io/quote@v1.5.1 but don't import anything from it. go list -m -f '{{.Path}}@{{.Version}}{{if .Indirect}} indirect{{end}}' all stdout '^rsc.io/quote@v1.5.2$' ! stdout 'rsc.io/quote/v3' go list -e all ! stdout '^rsc.io/quote$' # 'go mod tidy' should preserve the requirement on rsc.io/quote but mark it # indirect. This prevents a downgrade to v1.5.1, which could introduce # an ambiguity. go mod tidy go list -m -f '{{.Path}}@{{.Version}}{{if .Indirect}} indirect{{end}}' all stdout '^rsc.io/quote@v1.5.2 indirect$' stdout '^rsc.io/quote/v3@v3.0.0$' -- go.mod -- module use go 1.16 require ( old-indirect v0.0.0 rsc.io/quote v1.5.2 ) replace old-indirect v0.0.0 => ./old-indirect -- go.sum -- golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c h1:pvCbr/wm8HzDD3fVywevekufpn6tCGPY3spdHeZJEsw= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= rsc.io/quote v1.5.1/go.mod h1:LzX7hefJvL54yjefDEDHNONDjII0t9xZLPXsUe+TKr0= rsc.io/quote v1.5.2 h1:3fEykkD9k7lYzXqCYrwGAf7iNhbk4yCjHmKBN9td4L0= rsc.io/quote v1.5.2/go.mod h1:LzX7hefJvL54yjefDEDHNONDjII0t9xZLPXsUe+TKr0= rsc.io/sampler v1.3.0 h1:HLGR/BgEtI3r0uymSP/nl2uPLsUnNJX8toRyhfpBTII= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -- use.go -- package use import ( _ "old-indirect/empty" _ "rsc.io/quote/v3" ) -- old-indirect/empty/empty.go -- package empty -- old-indirect/go.mod -- module old-indirect go 1.16 require rsc.io/quote v1.5.1 -- old-indirect/go.sum -- golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= rsc.io/quote v1.5.2/go.mod h1:LzX7hefJvL54yjefDEDHNONDjII0t9xZLPXsUe+TKr0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=