# When converting a commit to a pseudo-version, don't use a retracted version
# as the base.
# Verifies golang.org/issue/41700.

[!net] skip
[!exec: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 -d 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 -d vcs-test.golang.org/git/retract-pseudo.git@v1.0.1-0.20201009173747-64c061ed4371
stderr '^go get: 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
