# 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
