blob: 2888391f6d63025aedca5c4ac3e570c16e3bdf46 [file] [log] [blame]
[short] skip 'generates a vcstest git repo'
[!git] skip
mkdir $WORK/mod1
mkdir $WORK/mod2
env GONOSUMDB=vcs-test.golang.org
env GOPROXY=direct
env GOMODCACHE=$WORK/mod1
# If we query a module version from a git repo, we expect its
# Origin data to be reusable.
go list -m -json vcs-test.golang.org/git/issue61415.git@latest
cp stdout git-latest.json
stdout '"Version": "v0.0.0-20231114180001-f213069baa68"'
stdout '"Origin":'
stdout '"VCS": "git"'
stdout '"Hash": "f213069baa68ec26412fb373c7cf6669db1f8e69"'
stdout '"Ref": "HEAD"'
stdout '"TagSum": "t1:47DEQpj8HBSa\+/TImW\+5JCeuQeRkm5NMpJWZG3hSuFU="'
go list -reuse=git-latest.json -m -json vcs-test.golang.org/git/issue61415.git@latest
stdout '"Version": "v0.0.0-20231114180001-f213069baa68"'
stdout '"Origin":'
stdout '"VCS": "git"'
stdout '"Hash": "f213069baa68ec26412fb373c7cf6669db1f8e69"'
stdout '"Ref": "HEAD"'
stdout '"TagSum": "t1:47DEQpj8HBSa\+/TImW\+5JCeuQeRkm5NMpJWZG3hSuFU="'
stdout '"Reuse": true'
# Now we construct a filesystem-based module proxy that
# contains only an older commit.
go clean -modcache
go mod download -json vcs-test.golang.org/git/issue61415.git@08a4fa6bb9c04ffba03b26ae427b0d6335d90a2a
stdout '"Version": "v0.0.0-20231114180000-08a4fa6bb9c0"'
stdout '"Origin":'
stdout '"VCS": "git"'
stdout '"Hash": "08a4fa6bb9c04ffba03b26ae427b0d6335d90a2a"'
[GOOS:windows] env GOPROXY=file:///$WORK/mod1/cache/download
[!GOOS:windows] env GOPROXY=file://$WORK/mod1/cache/download
env GOMODCACHE=$WORK/modcache2
# If we resolve the "latest" version query using a proxy,
# it is only going to have Git origin information about the one
# commit — not the other tags that would go into resolving
# the underlying version list.
# 'go list' should not emit the partial information,
# since it isn't enough to reconstruct the result.
go list -m -json vcs-test.golang.org/git/issue61415.git@latest
cp stdout proxy-latest.json
stdout '"Version": "v0.0.0-20231114180000-08a4fa6bb9c0"'
! stdout '"Origin":'
# However, if we list a specific, stable version, we should get
# whatever origin metadata the proxy has for the version.
go list -m -json vcs-test.golang.org/git/issue61415.git@v0.0.0-20231114180000-08a4fa6bb9c0
cp stdout proxy-version.json
stdout '"Version": "v0.0.0-20231114180000-08a4fa6bb9c0"'
stdout '"Origin":'
stdout '"VCS": "git"'
stdout '"Hash": "08a4fa6bb9c04ffba03b26ae427b0d6335d90a2a"'
! stdout '"Ref":'
! stdout '"TagSum":'
# The -reuse flag has no effect with a proxy, since the proxy can serve
# metadata about a given module version cheaply anyway.
go list -reuse=proxy-version.json -m -json vcs-test.golang.org/git/issue61415.git@v0.0.0-20231114180000-08a4fa6bb9c0
stdout '"Version": "v0.0.0-20231114180000-08a4fa6bb9c0"'
stdout '"Origin":'
stdout '"VCS": "git"'
stdout '"Hash": "08a4fa6bb9c04ffba03b26ae427b0d6335d90a2a"'
! stdout '"Ref":'
! stdout '"TagSum":'
! stdout '"Reuse":'
# With GOPROXY=direct, the -reuse flag has an effect, but
# the Origin data from the proxy should not be sufficient
# for the proxy response to be reused.
env GOPROXY=direct
go list -reuse=proxy-latest.json -m -json vcs-test.golang.org/git/issue61415.git@latest
stdout '"Version": "v0.0.0-20231114180001-f213069baa68"'
stdout '"Origin":'
stdout '"VCS": "git"'
stdout '"Hash": "f213069baa68ec26412fb373c7cf6669db1f8e69"'
stdout '"Ref": "HEAD"'
stdout '"TagSum": "t1:47DEQpj8HBSa\+/TImW\+5JCeuQeRkm5NMpJWZG3hSuFU="'
! stdout '"Reuse":'