# When converting a commit to a pseudo-version, don't use a retracted version # as the base. # Verifies golang.org/issue/41700. [short] skip [!git] skip env GOPROXY=direct env GOSUMDB=off go mod init m # Control: check that v1.0.0 is the only version and is retracted. go list -m -versions vcs-test.golang.org/git/retract-pseudo.git stdout '^vcs-test.golang.org/git/retract-pseudo.git$' go list -m -versions -retracted vcs-test.golang.org/git/retract-pseudo.git stdout '^vcs-test.golang.org/git/retract-pseudo.git v1.0.0$' # 713affd19d7b is a commit after v1.0.0. Don't use v1.0.0 as the base. go list -m vcs-test.golang.org/git/retract-pseudo.git@713affd19d7b stdout '^vcs-test.golang.org/git/retract-pseudo.git v0.0.0-20201009173747-713affd19d7b$' # 64c061ed4371 is the commit v1.0.0 refers to. Don't convert to v1.0.0. go list -m vcs-test.golang.org/git/retract-pseudo.git@64c061ed4371 stdout '^vcs-test.golang.org/git/retract-pseudo.git v0.0.0-20201009173747-64c061ed4371' # A retracted version is a valid base. Retraction should not validate existing # pseudo-versions, nor should it turn invalid pseudo-versions valid. go get vcs-test.golang.org/git/retract-pseudo.git@v1.0.1-0.20201009173747-713affd19d7b go list -m vcs-test.golang.org/git/retract-pseudo.git stdout '^vcs-test.golang.org/git/retract-pseudo.git v1.0.1-0.20201009173747-713affd19d7b$' ! go get vcs-test.golang.org/git/retract-pseudo.git@v1.0.1-0.20201009173747-64c061ed4371 stderr '^go: vcs-test.golang.org/git/retract-pseudo.git@v1.0.1-0.20201009173747-64c061ed4371: invalid pseudo-version: tag \(v1.0.0\) found on revision 64c061ed4371 is already canonical, so should not be replaced with a pseudo-version derived from that tag$' -- retract-pseudo.sh -- #!/bin/bash # This is not part of the test. # Run this to generate and update the repository on vcs-test.golang.org. set -euo pipefail rm -rf retract-pseudo mkdir retract-pseudo cd retract-pseudo git init # Create the module. # Retract v1.0.0 and tag v1.0.0 at the same commit. # The module has no unretracted release versions. go mod init vcs-test.golang.org/git/retract-pseudo.git go mod edit -retract v1.0.0 echo 'package p' >p.go git add -A git commit -m 'create module retract-pseudo' git tag v1.0.0 # Commit a trivial change so the default branch does not point to v1.0.0. git mv p.go q.go git commit -m 'trivial change' zip -r ../retract-pseudo.zip . gsutil cp ../retract-pseudo.zip gs://vcs-test/git/retract-pseudo.zip