| # Regression test for #56222: 'go get -t' and 'go mod tidy' |
| # should save enough checksums to run 'go test' on the named |
| # packages or any package in "all" respectively. |
| |
| # 'go mod tidy' in a module at go 1.21 or higher should preserve |
| # checksums needed to run 'go test all'. |
| cd m1 |
| go mod tidy |
| |
| go list -f '{{if eq .ImportPath "example.com/generics"}}{{.Module.GoVersion}}{{end}}' -deps -test example.com/m2/q |
| stdout 1.18 |
| [!short] go test -o $devnull -c all |
| |
| cat go.sum |
| replace 'example.com/generics v1.0.0/go.mod' 'example.com/notgenerics v1.0.0/go.mod' go.sum |
| |
| ! go list -f '{{if eq .ImportPath "example.com/generics"}}{{.Module.GoVersion}}{{end}}' -deps -test example.com/m2/q |
| stderr '^go: can''t load test package: \.\.'${/}m2${/}q${/}'q_test.go:3:8: example\.com/generics@v1\.0\.0: missing go.sum entry for go.mod file; to add it:\n\tgo mod download example\.com/generics$' |
| |
| go mod download -json example.com/generics |
| stdout '"GoModSum":' |
| go list -f '{{if eq .ImportPath "example.com/generics"}}{{.Module.GoVersion}}{{end}}' -deps -test example.com/m2/q |
| stdout 1.18 |
| |
| |
| # At go 1.20 or earlier, 'go mod tidy' should preserve the historical go.sum |
| # contents, but 'go test' should flag the missing checksums (instead of trying |
| # to build the test dependency with the wrong language version). |
| |
| go mod tidy -go=1.20 |
| ! go test -o $devnull -c all |
| stderr '^# example.com/m2/q\n'..${/}m2${/}q${/}'q_test.go:3:8: example.com/generics@v1.0.0: missing go.sum entry for go.mod file; to add it:\n\tgo mod download example.com/generics$' |
| |
| go mod download -json example.com/generics |
| go list -f '{{if eq .ImportPath "example.com/generics"}}{{.Module.GoVersion}}{{end}}' -deps -test example.com/m2/q |
| stdout 1.18 |
| |
| |
| # Even at go 1.20 or earlier, 'go mod tidy' shouldn't need go.mod files or |
| # checksums that it won't record. |
| |
| go mod tidy -go=1.20 |
| go clean -modcache # Remove checksums from the module cache, so that only go.sum is used. |
| |
| # Issue 60667: 'go list' without -mod=mod shouldn't report the checksums as |
| # dirty either. |
| go list -m -u all |
| |
| env OLDSUMDB=$GOSUMDB |
| env GOSUMDB=bad |
| go mod tidy |
| |
| env GOSUMDB=$OLDSUMDB |
| |
| |
| # Regardless of the go version in go.mod, 'go get -t' should fetch |
| # enough checksums to run 'go test' on the named package. |
| |
| rm p |
| go mod tidy -go=1.20 |
| go list -m all |
| ! stdout example.com/generics |
| go get -t example.com/m2/q@v1.0.0 |
| go list -f '{{if eq .ImportPath "example.com/generics"}}{{.Module.GoVersion}}{{end}}' -deps -test example.com/m2/q |
| stdout 1.18 |
| [!short] go test -o $devnull -c example.com/m2/q |
| |
| |
| -- m1/go.mod -- |
| module example.com/m1 |
| |
| go 1.21 |
| |
| require example.com/m2 v1.0.0 |
| replace example.com/m2 => ../m2 |
| -- m1/p/p.go -- |
| package p |
| |
| import _ "example.com/m2/q" |
| -- m2/go.mod -- |
| module example.com/m2 |
| |
| go 1.19 |
| |
| require example.com/generics v1.0.0 |
| -- m2/q/q.go -- |
| package q |
| -- m2/q/q_test.go -- |
| package q |
| |
| import _ "example.com/generics" |