mirror of
https://github.com/golang/go.git
synced 2026-04-02 17:30:01 +09:00
cmd/go/testdata/script: rewrite mod_invalid_version to not use network
Use vcstest to deflake the test. Fixes #68420 Change-Id: I0c54a0e9cbab160636e3be53e615b7816a6a6964 Reviewed-on: https://go-review.googlesource.com/c/go/+/751600 Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Ian Alexander <jitsu@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Reviewed-by: Michael Matloob <matloob@google.com>
This commit is contained in:
225
src/cmd/go/testdata/script/mod_invalid_version.txt
vendored
225
src/cmd/go/testdata/script/mod_invalid_version.txt
vendored
@@ -1,7 +1,6 @@
|
||||
[!net:golang.org] skip
|
||||
[short] skip
|
||||
[!git] skip
|
||||
|
||||
env GO111MODULE=on
|
||||
env GOPROXY=direct
|
||||
env GOSUMDB=off
|
||||
env GOFLAGS=-mod=mod
|
||||
@@ -9,222 +8,218 @@ env GOFLAGS=-mod=mod
|
||||
# Regression test for golang.org/issue/27173: if the user (or go.mod file)
|
||||
# requests a pseudo-version that does not match both the module path and commit
|
||||
# metadata, reject it with a helpful error message.
|
||||
#
|
||||
# TODO(bcmills): Replace the github.com/pierrec/lz4 examples with something
|
||||
# equivalent on vcs-test.golang.org.
|
||||
|
||||
# An incomplete commit hash is not a valid semantic version,
|
||||
# but can appear in the main go.mod file anyway and should be resolved.
|
||||
cp go.mod.orig go.mod
|
||||
go mod edit -require golang.org/x/text@14c0d48ead0c
|
||||
go mod edit -require vcs-test.golang.org/go/invalid-version@1732873
|
||||
cd outside
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'go: example.com@v0.0.0 \(replaced by \./\.\.\): parsing ..[/\\]go.mod: '$WORK'[/\\]gopath[/\\]src[/\\]go.mod:5: require golang.org/x/text: version "14c0d48ead0c" invalid: must be of the form v1.2.3'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'go: example.com@v0.0.0 \(replaced by \./\.\.\): parsing ..[/\\]go.mod: '$WORK'[/\\]gopath[/\\]src[/\\]go.mod:5: require vcs-test.golang.org/go/invalid-version: version "1732873" invalid: must be of the form v1.2.3'
|
||||
cd ..
|
||||
go list -m golang.org/x/text
|
||||
stdout 'golang.org/x/text v0.1.1-0.20170915032832-14c0d48ead0c'
|
||||
grep 'golang.org/x/text v0.1.1-0.20170915032832-14c0d48ead0c' go.mod
|
||||
go list -m vcs-test.golang.org/go/invalid-version
|
||||
stdout 'vcs-test.golang.org/go/invalid-version v0.1.1-0.20170915032832-1732873102df'
|
||||
grep 'vcs-test.golang.org/go/invalid-version v0.1.1-0.20170915032832-1732873102df' go.mod
|
||||
|
||||
# A module path below the repo root that does not contain a go.mod file is invalid.
|
||||
cp go.mod.orig go.mod
|
||||
go mod edit -require golang.org/x/text/unicode@v0.0.0-20170915032832-14c0d48ead0c
|
||||
go mod edit -require vcs-test.golang.org/go/invalid-version/unicode@v0.0.0-20170915032832-1732873102df
|
||||
cd outside
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text/unicode@v0.0.0-20170915032832-14c0d48ead0c: invalid version: missing golang.org/x/text/unicode/go.mod at revision 14c0d48ead0c'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tvcs-test.golang.org/go/invalid-version/unicode@v0.0.0-20170915032832-1732873102df: invalid version: missing vcs-test.golang.org/go/invalid-version/unicode/go.mod at revision 1732873102df'
|
||||
cd ..
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'golang.org/x/text/unicode@v0.0.0-20170915032832-14c0d48ead0c: invalid version: missing golang.org/x/text/unicode/go.mod at revision 14c0d48ead0c'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'vcs-test.golang.org/go/invalid-version/unicode@v0.0.0-20170915032832-1732873102df: invalid version: missing vcs-test.golang.org/go/invalid-version/unicode/go.mod at revision 1732873102df'
|
||||
|
||||
# However, arguments to 'go get' can name packages above the root.
|
||||
cp go.mod.orig go.mod
|
||||
go get golang.org/x/text/unicode@v0.0.0-20170915032832-14c0d48ead0c
|
||||
go list -m golang.org/x/text/...
|
||||
stdout 'golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c'
|
||||
! stdout 'golang.org/x/text/unicode'
|
||||
go get vcs-test.golang.org/go/invalid-version@v0.1.1-0.20170915032832-90ac26bf7f41
|
||||
go list -m vcs-test.golang.org/go/invalid-version/...
|
||||
stdout 'vcs-test.golang.org/go/invalid-version v0.1.1-0.20170915032832-90ac26bf7f41'
|
||||
! stdout 'vcs-test.golang.org/go/invalid-version/unicode'
|
||||
|
||||
# A major version that does not match the module path is invalid.
|
||||
cp go.mod.orig go.mod
|
||||
go mod edit -require golang.org/x/text@v2.1.1-0.20170915032832-14c0d48ead0c
|
||||
go mod edit -require vcs-test.golang.org/go/invalid-version@v2.1.1-0.20170915032832-1732873102df
|
||||
cd outside
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'go: example.com@v0.0.0 \(replaced by \./\.\.\): parsing ..[/\\]go.mod: '$WORK'[/\\]gopath[/\\]src[/\\]go.mod:5: require golang.org/x/text: version "v2.1.1-0.20170915032832-14c0d48ead0c" invalid: should be v0 or v1, not v2'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'go: example.com@v0.0.0 \(replaced by \./\.\.\): parsing ..[/\\]go.mod: '$WORK'[/\\]gopath[/\\]src[/\\]go.mod:5: require vcs-test.golang.org/go/invalid-version: version "v2.1.1-0.20170915032832-1732873102df" invalid: should be v0 or v1, not v2'
|
||||
cd ..
|
||||
! go list -m golang.org/x/text
|
||||
stderr '^go.mod:5: require golang.org/x/text: version "v2.1.1-0.20170915032832-14c0d48ead0c" invalid: should be v0 or v1, not v2'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr '^go.mod:5: require vcs-test.golang.org/go/invalid-version: version "v2.1.1-0.20170915032832-1732873102df" invalid: should be v0 or v1, not v2'
|
||||
|
||||
# A pseudo-version with fewer than 12 digits of SHA-1 prefix is invalid.
|
||||
cp go.mod.orig go.mod
|
||||
go mod edit -require golang.org/x/text@v0.1.1-0.20170915032832-14c0d48ead0
|
||||
go mod edit -require vcs-test.golang.org/go/invalid-version@v0.1.1-0.20170915032832-1732873102d
|
||||
cd outside
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v0.1.1-0.20170915032832-14c0d48ead0: invalid pseudo-version: revision is shorter than canonical \(expected 14c0d48ead0c\)'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tvcs-test.golang.org/go/invalid-version@v0.1.1-0.20170915032832-1732873102d: invalid pseudo-version: revision is shorter than canonical \(expected 1732873102df\)'
|
||||
cd ..
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'golang.org/x/text@v0.1.1-0.20170915032832-14c0d48ead0: invalid pseudo-version: revision is shorter than canonical \(expected 14c0d48ead0c\)'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'vcs-test.golang.org/go/invalid-version@v0.1.1-0.20170915032832-1732873102d: invalid pseudo-version: revision is shorter than canonical \(expected 1732873102df\)'
|
||||
|
||||
# A pseudo-version with more than 12 digits of SHA-1 prefix is invalid.
|
||||
cp go.mod.orig go.mod
|
||||
go mod edit -require golang.org/x/text@v0.1.1-0.20170915032832-14c0d48ead0cd47e3104ada247d91be04afc7a5a
|
||||
go mod edit -require vcs-test.golang.org/go/invalid-version@v0.1.1-0.20170915032832-1732873102dfcda2ecfbb94082da3cd4b21bc715
|
||||
cd outside
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v0.1.1-0.20170915032832-14c0d48ead0cd47e3104ada247d91be04afc7a5a: invalid pseudo-version: revision is longer than canonical \(expected 14c0d48ead0c\)'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tvcs-test.golang.org/go/invalid-version@v0.1.1-0.20170915032832-1732873102dfcda2ecfbb94082da3cd4b21bc715: invalid pseudo-version: revision is longer than canonical \(expected 1732873102df\)'
|
||||
cd ..
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'golang.org/x/text@v0.1.1-0.20170915032832-14c0d48ead0cd47e3104ada247d91be04afc7a5a: invalid pseudo-version: revision is longer than canonical \(expected 14c0d48ead0c\)'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'vcs-test.golang.org/go/invalid-version@v0.1.1-0.20170915032832-1732873102dfcda2ecfbb94082da3cd4b21bc715: invalid pseudo-version: revision is longer than canonical \(expected 1732873102df\)'
|
||||
|
||||
# A pseudo-version that does not match the commit timestamp is invalid.
|
||||
cp go.mod.orig go.mod
|
||||
go mod edit -require golang.org/x/text@v0.1.1-0.20190915032832-14c0d48ead0c
|
||||
go mod edit -require vcs-test.golang.org/go/invalid-version@v0.1.1-0.20190915032832-1732873102df
|
||||
cd outside
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v0.1.1-0.20190915032832-14c0d48ead0c: invalid pseudo-version: does not match version-control timestamp \(expected 20170915032832\)'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tvcs-test.golang.org/go/invalid-version@v0.1.1-0.20190915032832-1732873102df: invalid pseudo-version: does not match version-control timestamp \(expected 20170915032832\)'
|
||||
cd ..
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'golang.org/x/text@v0.1.1-0.20190915032832-14c0d48ead0c: invalid pseudo-version: does not match version-control timestamp \(expected 20170915032832\)'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'vcs-test.golang.org/go/invalid-version@v0.1.1-0.20190915032832-1732873102df: invalid pseudo-version: does not match version-control timestamp \(expected 20170915032832\)'
|
||||
|
||||
# A 'replace' directive in the main module can replace an invalid timestamp
|
||||
# with a valid one.
|
||||
go mod edit -replace golang.org/x/text@v0.1.1-0.20190915032832-14c0d48ead0c=golang.org/x/text@14c0d48ead0c
|
||||
go mod edit -replace vcs-test.golang.org/go/invalid-version@v0.1.1-0.20190915032832-1732873102df=vcs-test.golang.org/go/invalid-version@1732873102df
|
||||
cd outside
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v0.1.1-0.20190915032832-14c0d48ead0c: invalid pseudo-version: does not match version-control timestamp \(expected 20170915032832\)'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tvcs-test.golang.org/go/invalid-version@v0.1.1-0.20190915032832-1732873102df: invalid pseudo-version: does not match version-control timestamp \(expected 20170915032832\)'
|
||||
cd ..
|
||||
go list -m golang.org/x/text
|
||||
stdout 'golang.org/x/text v0.1.1-0.20190915032832-14c0d48ead0c => golang.org/x/text v0.1.1-0.20170915032832-14c0d48ead0c'
|
||||
go list -m vcs-test.golang.org/go/invalid-version
|
||||
stdout 'vcs-test.golang.org/go/invalid-version v0.1.1-0.20190915032832-1732873102df => vcs-test.golang.org/go/invalid-version v0.1.1-0.20170915032832-1732873102df'
|
||||
|
||||
# A pseudo-version that is not derived from a tag is invalid.
|
||||
cp go.mod.orig go.mod
|
||||
go mod edit -require golang.org/x/text@v1.999.999-0.20170915032832-14c0d48ead0c
|
||||
go mod edit -require vcs-test.golang.org/go/invalid-version@v1.999.999-0.20170915032832-1732873102df
|
||||
cd outside
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v1.999.999-0.20170915032832-14c0d48ead0c: invalid pseudo-version: preceding tag \(v1.999.998\) not found'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tvcs-test.golang.org/go/invalid-version@v1.999.999-0.20170915032832-1732873102df: invalid pseudo-version: preceding tag \(v1.999.998\) not found'
|
||||
cd ..
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'golang.org/x/text@v1.999.999-0.20170915032832-14c0d48ead0c: invalid pseudo-version: preceding tag \(v1.999.998\) not found'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'vcs-test.golang.org/go/invalid-version@v1.999.999-0.20170915032832-1732873102df: invalid pseudo-version: preceding tag \(v1.999.998\) not found'
|
||||
|
||||
# A v1.0.0- pseudo-version that is not derived from a tag is invalid:
|
||||
# v1.0.0- implies no tag, but the correct no-tag prefix for a module path
|
||||
# without a major-version suffix is v0.0.0-.
|
||||
cp go.mod.orig go.mod
|
||||
go mod edit -require golang.org/x/text@v1.0.0-20170915032832-14c0d48ead0c
|
||||
go mod edit -require vcs-test.golang.org/go/invalid-version@v1.0.0-20170915032832-1732873102df
|
||||
cd outside
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v1.0.0-20170915032832-14c0d48ead0c: invalid pseudo-version: major version without preceding tag must be v0, not v1'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tvcs-test.golang.org/go/invalid-version@v1.0.0-20170915032832-1732873102df: invalid pseudo-version: major version without preceding tag must be v0, not v1'
|
||||
cd ..
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'golang.org/x/text@v1.0.0-20170915032832-14c0d48ead0c: invalid pseudo-version: major version without preceding tag must be v0, not v1'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'vcs-test.golang.org/go/invalid-version@v1.0.0-20170915032832-1732873102df: invalid pseudo-version: major version without preceding tag must be v0, not v1'
|
||||
|
||||
# A pseudo-version vX.Y.Z+1 cannot have Z+1 == 0, since that would
|
||||
# imply a base tag with a negative patch field.
|
||||
cp go.mod.orig go.mod
|
||||
go mod edit -require golang.org/x/text@v0.0.0-0.20170915032832-14c0d48ead0c
|
||||
go mod edit -require vcs-test.golang.org/go/invalid-version@v0.0.0-0.20170915032832-1732873102df
|
||||
cd outside
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v0.0.0-0.20170915032832-14c0d48ead0c: invalid pseudo-version: version before v0.0.0 would have negative patch number'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tvcs-test.golang.org/go/invalid-version@v0.0.0-0.20170915032832-1732873102df: invalid pseudo-version: version before v0.0.0 would have negative patch number'
|
||||
cd ..
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'golang.org/x/text@v0.0.0-0.20170915032832-14c0d48ead0c: invalid pseudo-version: version before v0.0.0 would have negative patch number'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'vcs-test.golang.org/go/invalid-version@v0.0.0-0.20170915032832-1732873102df: invalid pseudo-version: version before v0.0.0 would have negative patch number'
|
||||
|
||||
# A 'replace' directive in the main module can replace an
|
||||
# invalid pseudo-version base with a valid one.
|
||||
go mod edit -replace golang.org/x/text@v0.0.0-0.20170915032832-14c0d48ead0c=golang.org/x/text@v0.0.0-20170915032832-14c0d48ead0c
|
||||
go mod edit -replace vcs-test.golang.org/go/invalid-version@v0.0.0-0.20170915032832-1732873102df=vcs-test.golang.org/go/invalid-version@v0.0.0-20170915032832-1732873102df
|
||||
cd outside
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v0.0.0-0.20170915032832-14c0d48ead0c: invalid pseudo-version: version before v0.0.0 would have negative patch number'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tvcs-test.golang.org/go/invalid-version@v0.0.0-0.20170915032832-1732873102df: invalid pseudo-version: version before v0.0.0 would have negative patch number'
|
||||
cd ..
|
||||
go list -m golang.org/x/text
|
||||
stdout 'golang.org/x/text v0.0.0-0.20170915032832-14c0d48ead0c => golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c'
|
||||
go list -m vcs-test.golang.org/go/invalid-version
|
||||
stdout 'vcs-test.golang.org/go/invalid-version v0.0.0-0.20170915032832-1732873102df => vcs-test.golang.org/go/invalid-version v0.0.0-20170915032832-1732873102df'
|
||||
|
||||
# A 'replace' directive can replace an invalid 'latest' version, and
|
||||
# should suppress errors for that version in 'go get -u'
|
||||
cp go.mod.orig go.mod
|
||||
go mod edit -require golang.org/x/text@v1.999999.0
|
||||
go mod edit -replace golang.org/x/text@v1.999999.0=golang.org/x/text@v0.0.0-20170915032832-14c0d48ead0c
|
||||
go mod edit -require vcs-test.golang.org/go/invalid-version@v1.999999.0
|
||||
go mod edit -replace vcs-test.golang.org/go/invalid-version@v1.999999.0=vcs-test.golang.org/go/invalid-version@v0.0.0-20170915032832-1732873102df
|
||||
cd outside
|
||||
! go get golang.org/x/text@upgrade
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v1.999999.0: reading golang.org/x/text/go.mod at revision v1.999999.0: unknown revision v1.999999.0'
|
||||
! go get vcs-test.golang.org/go/invalid-version@upgrade
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tvcs-test.golang.org/go/invalid-version@v1.999999.0: reading vcs-test.golang.org/go/invalid-version/go.mod at revision v1.999999.0: unknown revision v1.999999.0'
|
||||
cd ..
|
||||
go get golang.org/x/text@upgrade
|
||||
go list -m golang.org/x/text
|
||||
stdout 'golang.org/x/text v1.999999.0 => golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c'
|
||||
go get vcs-test.golang.org/go/invalid-version@upgrade
|
||||
go list -m vcs-test.golang.org/go/invalid-version
|
||||
stdout 'vcs-test.golang.org/go/invalid-version v1.999999.0 => vcs-test.golang.org/go/invalid-version v0.0.0-20170915032832-1732873102df'
|
||||
|
||||
|
||||
# A pseudo-version derived from a non-ancestor tag is invalid.
|
||||
cp go.mod.orig go.mod
|
||||
go mod edit -require golang.org/x/text@v0.2.1-0.20170915032832-14c0d48ead0c
|
||||
go mod edit -require vcs-test.golang.org/go/invalid-version@v0.2.1-0.20170915032832-1732873102df
|
||||
cd outside
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v0.2.1-0.20170915032832-14c0d48ead0c: invalid pseudo-version: revision 14c0d48ead0c is not a descendent of preceding tag \(v0.2.0\)'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tvcs-test.golang.org/go/invalid-version@v0.2.1-0.20170915032832-1732873102df: invalid pseudo-version: revision 1732873102df is not a descendent of preceding tag \(v0.2.0\)'
|
||||
cd ..
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'golang.org/x/text@v0.2.1-0.20170915032832-14c0d48ead0c: invalid pseudo-version: revision 14c0d48ead0c is not a descendent of preceding tag \(v0.2.0\)'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'vcs-test.golang.org/go/invalid-version@v0.2.1-0.20170915032832-1732873102df: invalid pseudo-version: revision 1732873102df is not a descendent of preceding tag \(v0.2.0\)'
|
||||
|
||||
# A pseudo-version derived from a canonical tag on the same revision is invalid.
|
||||
cp go.mod.orig go.mod
|
||||
go mod edit -require golang.org/x/text@v0.2.1-0.20171213102548-c4d099d611ac
|
||||
go mod edit -require vcs-test.golang.org/go/invalid-version@v0.2.1-0.20171213102548-a72be5ead5a6
|
||||
cd outside
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v0.2.1-0.20171213102548-c4d099d611ac: invalid pseudo-version: tag \(v0.2.0\) found on revision c4d099d611ac is already canonical, so should not be replaced with a pseudo-version derived from that tag'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tvcs-test.golang.org/go/invalid-version@v0.2.1-0.20171213102548-a72be5ead5a6: invalid pseudo-version: tag \(v0.2.0\) found on revision a72be5ead5a6 is already canonical, so should not be replaced with a pseudo-version derived from that tag'
|
||||
cd ..
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'golang.org/x/text@v0.2.1-0.20171213102548-c4d099d611ac: invalid pseudo-version: tag \(v0.2.0\) found on revision c4d099d611ac is already canonical, so should not be replaced with a pseudo-version derived from that tag'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'vcs-test.golang.org/go/invalid-version@v0.2.1-0.20171213102548-a72be5ead5a6: invalid pseudo-version: tag \(v0.2.0\) found on revision a72be5ead5a6 is already canonical, so should not be replaced with a pseudo-version derived from that tag'
|
||||
|
||||
# A +incompatible suffix is not allowed on a version that is actually compatible.
|
||||
cp go.mod.orig go.mod
|
||||
go mod edit -require golang.org/x/text@v0.1.1-0.20170915032832-14c0d48ead0c+incompatible
|
||||
go mod edit -require vcs-test.golang.org/go/invalid-version@v0.1.1-0.20170915032832-1732873102df+incompatible
|
||||
cd outside
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v0.1.1-0.20170915032832-14c0d48ead0c\+incompatible: invalid version: \+incompatible suffix not allowed: major version v0 is compatible'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'go: example.com@v0.0.0 requires\n\tvcs-test.golang.org/go/invalid-version@v0.1.1-0.20170915032832-1732873102df\+incompatible: invalid version: \+incompatible suffix not allowed: major version v0 is compatible'
|
||||
cd ..
|
||||
! go list -m golang.org/x/text
|
||||
stderr 'golang.org/x/text@v0.1.1-0.20170915032832-14c0d48ead0c\+incompatible: invalid version: \+incompatible suffix not allowed: major version v0 is compatible'
|
||||
|
||||
[!net:github.com] stop
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr 'vcs-test.golang.org/go/invalid-version@v0.1.1-0.20170915032832-1732873102df\+incompatible: invalid version: \+incompatible suffix not allowed: major version v0 is compatible'
|
||||
|
||||
# The pseudo-version for a commit after a tag with a non-matching major version
|
||||
# should instead be based on the last matching tag.
|
||||
# should instead be based on the last matching tag (which is v4.0.0 in this case).
|
||||
cp go.mod.orig go.mod
|
||||
go mod edit -require github.com/pierrec/lz4@473cd7ce01a1
|
||||
go list -m github.com/pierrec/lz4
|
||||
stdout 'github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1'
|
||||
go mod edit -require vcs-test.golang.org/go/invalid-version@5213b9f8842f
|
||||
go list -m vcs-test.golang.org/go/invalid-version
|
||||
stdout 'vcs-test.golang.org/go/invalid-version v0.2.1-0.20171213102548-5213b9f8842f'
|
||||
cd outside
|
||||
go list -m github.com/pierrec/lz4
|
||||
stdout 'github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1'
|
||||
go list -m vcs-test.golang.org/go/invalid-version
|
||||
stdout 'vcs-test.golang.org/go/invalid-version v0.2.1-0.20171213102548-5213b9f8842f'
|
||||
cd ..
|
||||
|
||||
# A +incompatible pseudo-version for a module that has an explicit go.mod file is invalid.
|
||||
cp go.mod.orig go.mod
|
||||
go mod edit -require github.com/pierrec/lz4@v2.0.9-0.20190209155647-9a39efadad3d+incompatible
|
||||
go mod edit -require vcs-test.golang.org/go/invalid-version@v4.0.1-0.20171213102548-5213b9f8842f+incompatible
|
||||
cd outside
|
||||
! go list -m github.com/pierrec/lz4
|
||||
stderr '^go: example.com@v0.0.0 requires\n\tgithub.com/pierrec/lz4@v2.0.9-0.20190209155647-9a39efadad3d\+incompatible: invalid version: module contains a go.mod file, so module path must match major version \("github.com/pierrec/lz4/v2"\)$'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr '^go: example.com@v0.0.0 requires\n\tvcs-test.golang.org/go/invalid-version@v4.0.1-0.20171213102548-5213b9f8842f\+incompatible: invalid version: module contains a go.mod file, so module path must match major version \("vcs-test.golang.org/go/invalid-version/v4"\)$'
|
||||
cd ..
|
||||
! go list -m github.com/pierrec/lz4
|
||||
stderr '^go: github.com/pierrec/lz4@v2.0.9-0.20190209155647-9a39efadad3d\+incompatible: invalid version: module contains a go.mod file, so module path must match major version \("github.com/pierrec/lz4/v2"\)$'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr '^go: vcs-test.golang.org/go/invalid-version@v4.0.1-0.20171213102548-5213b9f8842f\+incompatible: invalid version: module contains a go.mod file, so module path must match major version \("vcs-test.golang.org/go/invalid-version/v4"\)$'
|
||||
|
||||
# A +incompatible pseudo-version is valid for a revision of the module
|
||||
# that lacks a go.mod file.
|
||||
cp go.mod.orig go.mod
|
||||
go mod edit -require github.com/pierrec/lz4@v2.0.4-0.20180826165652-dbe9298ce099+incompatible
|
||||
go mod edit -require vcs-test.golang.org/go/invalid-version@v4.0.1-0.20171213102548-dbb861dd9ef0+incompatible
|
||||
cd outside
|
||||
go list -m github.com/pierrec/lz4
|
||||
stdout 'github.com/pierrec/lz4 v2.0.4-0.20180826165652-dbe9298ce099\+incompatible'
|
||||
go list -m vcs-test.golang.org/go/invalid-version
|
||||
stdout 'vcs-test.golang.org/go/invalid-version v4.0.1-0.20171213102548-dbb861dd9ef0\+incompatible'
|
||||
cd ..
|
||||
go list -m github.com/pierrec/lz4
|
||||
stdout 'github.com/pierrec/lz4 v2.0.4-0.20180826165652-dbe9298ce099\+incompatible'
|
||||
go list -m vcs-test.golang.org/go/invalid-version
|
||||
stdout 'vcs-test.golang.org/go/invalid-version v4.0.1-0.20171213102548-dbb861dd9ef0\+incompatible'
|
||||
|
||||
# 'go get' for a mismatched major version without a go.mod file should resolve
|
||||
# to the equivalent +incompatible version, not a pseudo-version with a different
|
||||
# major version.
|
||||
cp go.mod.orig go.mod
|
||||
go get github.com/pierrec/lz4@v2.0.5
|
||||
go list -m github.com/pierrec/lz4
|
||||
stdout 'github.com/pierrec/lz4 v2.0.5\+incompatible'
|
||||
go get vcs-test.golang.org/go/invalid-version@v5.0.0
|
||||
go list -m vcs-test.golang.org/go/invalid-version
|
||||
stdout 'vcs-test.golang.org/go/invalid-version v5.0.0\+incompatible'
|
||||
|
||||
# 'go get' for a mismatched major version with a go.mod file should error out,
|
||||
# not resolve to a pseudo-version with a different major version.
|
||||
cp go.mod.orig go.mod
|
||||
! go get github.com/pierrec/lz4@v2.0.8
|
||||
stderr 'go: github.com/pierrec/lz4@v2.0.8: invalid version: module contains a go.mod file, so module path must match major version \("github.com/pierrec/lz4/v2"\)$'
|
||||
! go get vcs-test.golang.org/go/invalid-version@v4.0.0
|
||||
stderr 'go: vcs-test.golang.org/go/invalid-version@v4.0.0: invalid version: module contains a go.mod file, so module path must match major version \("vcs-test.golang.org/go/invalid-version/v4"\)$'
|
||||
|
||||
# An invalid +incompatible suffix for a canonical version should error out,
|
||||
# not resolve to a pseudo-version.
|
||||
@@ -232,13 +227,13 @@ stderr 'go: github.com/pierrec/lz4@v2.0.8: invalid version: module contains a go
|
||||
# TODO(bcmills): The "outside" view for this failure mode is missing its import stack.
|
||||
# Figure out why and fix it.
|
||||
cp go.mod.orig go.mod
|
||||
go mod edit -require github.com/pierrec/lz4@v2.0.8+incompatible
|
||||
go mod edit -require vcs-test.golang.org/go/invalid-version@v4.0.0+incompatible
|
||||
cd outside
|
||||
! go list -m github.com/pierrec/lz4
|
||||
stderr '^go: github.com/pierrec/lz4@v2.0.8\+incompatible: invalid version: module contains a go.mod file, so module path must match major version \("github.com/pierrec/lz4/v2"\)$'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr '^go: vcs-test.golang.org/go/invalid-version@v4.0.0\+incompatible: invalid version: module contains a go.mod file, so module path must match major version \("vcs-test.golang.org/go/invalid-version/v4"\)$'
|
||||
cd ..
|
||||
! go list -m github.com/pierrec/lz4
|
||||
stderr '^go: github.com/pierrec/lz4@v2.0.8\+incompatible: invalid version: module contains a go.mod file, so module path must match major version \("github.com/pierrec/lz4/v2"\)$'
|
||||
! go list -m vcs-test.golang.org/go/invalid-version
|
||||
stderr '^go: vcs-test.golang.org/go/invalid-version@v4.0.0\+incompatible: invalid version: module contains a go.mod file, so module path must match major version \("vcs-test.golang.org/go/invalid-version/v4"\)$'
|
||||
|
||||
-- go.mod.orig --
|
||||
module example.com
|
||||
|
||||
54
src/cmd/go/testdata/vcstest/git/invalid-version.txt
vendored
Normal file
54
src/cmd/go/testdata/vcstest/git/invalid-version.txt
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
handle git
|
||||
|
||||
env GIT_AUTHOR_NAME='Michael Matloob'
|
||||
env GIT_AUTHOR_EMAIL='matloob@golang.org'
|
||||
env GIT_COMMITTER_NAME=$GIT_AUTHOR_NAME
|
||||
env GIT_COMMITTER_EMAIL=$GIT_AUTHOR_EMAIL
|
||||
|
||||
at 2017-09-15T03:28:32-00:00
|
||||
|
||||
git init
|
||||
git commit --allow-empty -m 'initial commit'
|
||||
git tag v0.1.0
|
||||
git tag v3.1.0
|
||||
|
||||
git add go.mod
|
||||
git commit -m 'create module invalid-version'
|
||||
|
||||
git add unicode/unicode.go
|
||||
git commit -m 'add unicode package'
|
||||
|
||||
at 2017-12-13T10:25:48-00:00
|
||||
|
||||
git add unicode/unicode2.go
|
||||
git commit -m 'another commit with tag'
|
||||
git tag v0.2.0
|
||||
git tag v4.0.0
|
||||
|
||||
git add 3.txt
|
||||
git commit -m 'yet another commit'
|
||||
|
||||
git rm go.mod
|
||||
git commit -m 'remove go.mod'
|
||||
|
||||
git tag v5.0.0
|
||||
|
||||
git log --oneline --decorate=short
|
||||
cmp stdout .git-log
|
||||
|
||||
-- .git-log --
|
||||
dbb861d (HEAD -> main, tag: v5.0.0) remove go.mod
|
||||
5213b9f yet another commit
|
||||
a72be5e (tag: v4.0.0, tag: v0.2.0) another commit with tag
|
||||
90ac26b add unicode package
|
||||
1732873 create module invalid-version
|
||||
d047a7b (tag: v3.1.0, tag: v0.1.0) initial commit
|
||||
-- go.mod --
|
||||
module vcs-test.golang.org/go/invalid-version
|
||||
|
||||
go 1.26.0
|
||||
-- 3.txt --
|
||||
-- unicode/unicode.go --
|
||||
package unicode
|
||||
-- unicode/unicode2.go --
|
||||
package unicode
|
||||
10
src/cmd/go/testdata/vcstest/go/invalid-version.txt
vendored
Normal file
10
src/cmd/go/testdata/vcstest/go/invalid-version.txt
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
handle dir
|
||||
|
||||
-- index.html --
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<meta name="go-import" content="vcs-test.golang.org/go/invalid-version git https://vcs-test.golang.org/git/invalid-version">
|
||||
-- unicode/index.html --
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<meta name="go-import" content="vcs-test.golang.org/go/invalid-version git https://vcs-test.golang.org/git/invalid-version">
|
||||
Reference in New Issue
Block a user