summaryrefslogtreecommitdiffstats
path: root/src/cmd/go/testdata/script/gotoolchain_modcmds.txt
blob: 1edd6d85a5e66c6884e9be4e645b613cd76cec8b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
env TESTGO_VERSION=go1.21.0
env TESTGO_VERSION_SWITCH=switch

# If the main module's go.mod file lists a version lower than the version
# required by its dependencies, the commands that fetch and diagnose the module
# graph (such as 'go mod graph' and 'go mod verify') should fail explicitly:
# they can't interpret the graph themselves, and they aren't allowed to update
# the go.mod file to record a specific, stable toolchain version that can.

! go mod verify
stderr '^go: rsc.io/future@v1.0.0: module rsc.io/future@v1.0.0 requires go >= 1.999 \(running go 1.21.0\)'

! go mod graph
stderr '^go: rsc.io/future@v1.0.0: module rsc.io/future@v1.0.0 requires go >= 1.999 \(running go 1.21.0\)'

# TODO(#64008): 'go mod download' without arguments should fail too.


# 'go get' should update the main module's go.mod file to a version compatible with the
# go version required for rsc.io/future, not fail.
go get .
stderr '^go: module rsc.io/future@v1.0.0 requires go >= 1.999; switching to go1.999testmod$'
stderr '^go: upgraded go 1.21 => 1.999$'
stderr '^go: added toolchain go1.999testmod$'


# Now, the various 'go mod' subcommands should succeed.

go mod download

go mod verify

go mod graph


-- go.mod --
module example

go 1.21

require rsc.io/future v1.0.0
-- example.go --
package example

import _ "rsc.io/future"