# Regression test for golang.org/issue/34189 and golang.org/issue/34165:
# @latest, @upgrade, and @patch should prefer compatible versions over
# +incompatible ones, even if offered by a proxy.

[!net] skip

env GO111MODULE=on
env GOPROXY=
env GOSUMDB=

# github.com/russross/blackfriday v2.0.0+incompatible exists,
# and should be resolved if we ask for v2.0 explicitly.

go list -m github.com/russross/blackfriday@v2.0
stdout '^github.com/russross/blackfriday v2\.0\.0\+incompatible$'

# blackfriday v1.5.2 has a go.mod file, so v1.5.2 should be preferred over
# v2.0.0+incompatible when resolving latest, upgrade, and patch.

go list -m github.com/russross/blackfriday@latest
stdout '^github.com/russross/blackfriday v1\.'

go list -m github.com/russross/blackfriday@upgrade
stdout '^github.com/russross/blackfriday v1\.'

go list -m github.com/russross/blackfriday@patch
stdout '^github.com/russross/blackfriday v1\.'

# If we're fetching directly from version control, ignored +incompatible
# versions should also be omitted by 'go list'.

# (Note that they may still be included in results from a proxy: in proxy mode,
# we would need to fetch the whole zipfile for the latest compatible version in
# order to determine whether it contains a go.mod file, and part of the point of
# the proxy is to avoid fetching unnecessary data.)

[!exec:git] stop
env GOPROXY=direct

go list -versions -m github.com/russross/blackfriday github.com/russross/blackfriday
stdout '^github.com/russross/blackfriday v1\.5\.1 v1\.5\.2' # and possibly others
! stdout ' v2\.'

# However, if the latest compatible version does not include a go.mod file,
# +incompatible versions should still be listed, as they may still reflect the
# intent of the module author.

go list -versions -m github.com/rsc/legacytest
stdout '^github.com/rsc/legacytest v1\.0\.0 v1\.1\.0-pre v1\.2\.0 v2\.0\.0\+incompatible'

# If we're fetching directly from version control, asking for a commit hash
# corresponding to a +incompatible version should continue to produce the
# +incompatible version tagged for that commit, even if it is no longer listed.

go list -m github.com/russross/blackfriday@cadec560ec52
stdout '^github.com/russross/blackfriday v2\.0\.0\+incompatible$'

# Similarly, requesting an untagged commit should continue to produce a +incompatible
# pseudo-version.

go list -m github.com/rsc/legacytest@7303f7796364
stdout '^github.com/rsc/legacytest v2\.0\.1-0\.20180717164253-7303f7796364\+incompatible$'

-- go.mod --
module github.com/golang.org/issue/34165
