# Regression test for golang.org/issue/34254:
# a clone of gopkg.in/[…].vN should be replaceable by
# a fork hosted at corp.example.com/[…]/vN,
# even if there is an explicit go.mod file containing the
# gopkg.in path.

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

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

# Replacing gopkg.in/[…].vN with a repository with a root go.mod file
# specifying […].vN and a compatible version should succeed, even if
# the replacement path is not a gopkg.in path.
cd 4-to-4
go list -m gopkg.in/src-d/go-git.v4

# Previous versions of the "go" command accepted v0 and v1 pseudo-versions
# as replacements for gopkg.in/[…].v4.
# As a special case, we continue to accept those.

cd ../4-to-0
go list -m gopkg.in/src-d/go-git.v4

cd ../4-to-1
go list -m gopkg.in/src-d/go-git.v4

cd ../4-to-incompatible
go list -m gopkg.in/src-d/go-git.v4

# A mismatched gopkg.in path should not be able to replace a different major version.
cd ../3-to-gomod-4
! go list -m gopkg.in/src-d/go-git.v3
stderr '^go: gopkg\.in/src-d/go-git\.v3@v3.0.0-20190801152248-0d1a009cbb60: invalid version: go\.mod has non-\.\.\.\.v3 module path "gopkg\.in/src-d/go-git\.v4" at revision 0d1a009cbb60$'

-- 4-to-4/go.mod --
module golang.org/issue/34254

go 1.13

require gopkg.in/src-d/go-git.v4 v4.13.1

replace gopkg.in/src-d/go-git.v4 v4.13.1 => github.com/src-d/go-git/v4 v4.13.1
-- 4-to-1/go.mod --
module golang.org/issue/34254

go 1.13

require gopkg.in/src-d/go-git.v4 v4.13.1

replace gopkg.in/src-d/go-git.v4 v4.13.1 => github.com/src-d/go-git v1.0.1-0.20190801152248-0d1a009cbb60
-- 4-to-0/go.mod --
module golang.org/issue/34254

go 1.13

require gopkg.in/src-d/go-git.v4 v4.13.1

replace gopkg.in/src-d/go-git.v4 v4.13.1 => github.com/src-d/go-git v0.0.0-20190801152248-0d1a009cbb60
-- 4-to-incompatible/go.mod --
module golang.org/issue/34254

go 1.13

require gopkg.in/src-d/go-git.v4 v4.13.1

replace gopkg.in/src-d/go-git.v4 v4.13.1 => github.com/src-d/go-git v4.6.0+incompatible
-- 3-to-gomod-4/go.mod --
module golang.org/issue/34254
go 1.13

require gopkg.in/src-d/go-git.v3 v3.2.0

// This replacement has a go.mod file declaring its path to be
// gopkg.in/src-d/go-git.v4, so it cannot be used as a replacement for v3.
replace gopkg.in/src-d/go-git.v3 v3.2.0 => gopkg.in/src-d/go-git.v3 v3.0.0-20190801152248-0d1a009cbb60
