env GO111MODULE=on
env GOPROXY=direct
env GOSUMDB=off

# Testing that a pseudo-version is based on the semantically-latest
# tag that appears in any commit that is a (transitive) parent of the commit
# supplied to 'go get', regardless of branches

[!net] skip
[!exec:git] skip

# For this test repository:
#  tag v0.2.1 is most recent tag on master itself
#  tag v0.2.2 is on branch2, which was then merged to master
#  master is a merge commit with both tags as parents
#
# The pseudo-version hence sorts immediately after v0.2.2 rather
# than v0.2.1, even though the v0.2.2 tag is not on master.

go get -d vcs-test.golang.org/git/tagtests.git@master
go list -m all
stdout '^vcs-test.golang.org/git/tagtests.git v0.2.3-0\.'

-- go.mod --
module x

go 1.12
-- x.go --
package x

import _ "vcs-test.golang.org/git/tagtests.git"
-- gen_testtags.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
cd "$(dirname "$0")"
rm -rf tagtests
mkdir tagtests
cd tagtests

git init
echo module vcs-test.golang.org/git/tagtests.git >go.mod
echo package tagtests >tagtests.go
git add go.mod tagtests.go
git commit -m 'create module tagtests'

git branch b

echo v0.2.1 >v0.2.1
git add v0.2.1
git commit -m v0.2.1
git tag v0.2.1

git checkout b
echo v0.2.2 >v0.2.2
git add v0.2.2
git commit -m v0.2.2
git tag v0.2.2

git checkout master
git merge b -m merge

zip -r ../tagtests.zip .
gsutil cp ../tagtests.zip gs://vcs-test/git/tagtests.zip
