[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":'