...

Text file src/cmd/go/testdata/script/mod_import_toolchain.txt

Documentation: cmd/go/testdata/script

     1# This test verifies that 'go get' and 'go mod tidy' switch to a newer toolchain
     2# if needed to process newly-resolved imports.
     3
     4env TESTGO_VERSION=go1.21.0
     5env TESTGO_VERSION_SWITCH=switch
     6
     7cp go.mod go.mod.orig
     8
     9# tidy reports needing 1.22.0 for b1
    10env GOTOOLCHAIN=local
    11! go mod tidy
    12stderr '^go: example imports\n\texample.net/b: module ./b1 requires go >= 1.22.0 \(running go 1.21.0; GOTOOLCHAIN=local\)$'
    13env GOTOOLCHAIN=auto
    14go mod tidy
    15
    16cmp stderr tidy-stderr.want
    17cmp go.mod go.mod.tidy
    18
    19cp go.mod.orig go.mod
    20env GOTOOLCHAIN=local
    21! go get -v .
    22stderr '^go: example.net/b@v0.1.0: module ./b1 requires go >= 1.22.0 \(running go 1.21.0; GOTOOLCHAIN=local\)$'
    23env GOTOOLCHAIN=auto
    24go get -v .
    25cmp stderr get-v-stderr.want
    26cmp go.mod go.mod.tidy
    27
    28cp go.mod.orig go.mod
    29env GOTOOLCHAIN=local
    30! go get -u -v .
    31stderr '^go: example.net/a@v0.2.0: module ./a2 requires go >= 1.22.0 \(running go 1.21.0; GOTOOLCHAIN=local\)$'
    32env GOTOOLCHAIN=auto
    33go get -u -v .
    34cmp stderr get-u-v-stderr.want
    35cmp go.mod go.mod.upgraded
    36
    37-- tidy-stderr.want --
    38go: found example.net/b in example.net/b v0.1.0
    39go: module ./b1 requires go >= 1.22.0; switching to go1.22.9
    40go: found example.net/b in example.net/b v0.1.0
    41go: found example.net/c in example.net/c v0.1.0
    42-- get-v-stderr.want --
    43go: trying upgrade to example.net/b@v0.1.0
    44go: module ./b1 requires go >= 1.22.0; switching to go1.22.9
    45go: trying upgrade to example.net/b@v0.1.0
    46go: accepting indirect upgrade from go@1.20 to 1.22.0
    47go: trying upgrade to example.net/c@v0.1.0
    48go: upgraded go 1.20 => 1.22.0
    49go: added example.net/b v0.1.0
    50go: added example.net/c v0.1.0
    51go: added example.net/d v0.1.0
    52-- get-u-v-stderr.want --
    53go: trying upgrade to example.net/a@v0.2.0
    54go: trying upgrade to example.net/b@v0.1.0
    55go: module ./a2 requires go >= 1.22.0; switching to go1.22.9
    56go: trying upgrade to example.net/a@v0.2.0
    57go: trying upgrade to example.net/b@v0.1.0
    58go: accepting indirect upgrade from go@1.20 to 1.22.0
    59go: trying upgrade to example.net/c@v0.1.0
    60go: trying upgrade to example.net/d@v0.2.0
    61go: module ./d2 requires go >= 1.23.0; switching to go1.23.9
    62go: trying upgrade to example.net/a@v0.2.0
    63go: trying upgrade to example.net/b@v0.1.0
    64go: accepting indirect upgrade from go@1.20 to 1.22.0
    65go: trying upgrade to example.net/c@v0.1.0
    66go: trying upgrade to example.net/d@v0.2.0
    67go: accepting indirect upgrade from go@1.22.0 to 1.23.0
    68go: upgraded go 1.20 => 1.23.0
    69go: upgraded example.net/a v0.1.0 => v0.2.0
    70go: added example.net/b v0.1.0
    71go: added example.net/c v0.1.0
    72go: added example.net/d v0.2.0
    73-- go.mod --
    74module example
    75
    76go 1.20
    77
    78require example.net/a v0.1.0
    79
    80replace (
    81	example.net/a v0.1.0 => ./a1
    82	example.net/a v0.2.0 => ./a2
    83	example.net/b v0.1.0 => ./b1
    84	example.net/c v0.1.0 => ./c1
    85	example.net/d v0.1.0 => ./d1
    86	example.net/d v0.2.0 => ./d2
    87)
    88-- go.mod.tidy --
    89module example
    90
    91go 1.22.0
    92
    93require (
    94	example.net/a v0.1.0
    95	example.net/b v0.1.0
    96)
    97
    98require (
    99	example.net/c v0.1.0 // indirect
   100	example.net/d v0.1.0 // indirect
   101)
   102
   103replace (
   104	example.net/a v0.1.0 => ./a1
   105	example.net/a v0.2.0 => ./a2
   106	example.net/b v0.1.0 => ./b1
   107	example.net/c v0.1.0 => ./c1
   108	example.net/d v0.1.0 => ./d1
   109	example.net/d v0.2.0 => ./d2
   110)
   111-- go.mod.upgraded --
   112module example
   113
   114go 1.23.0
   115
   116require (
   117	example.net/a v0.2.0
   118	example.net/b v0.1.0
   119)
   120
   121require (
   122	example.net/c v0.1.0 // indirect
   123	example.net/d v0.2.0 // indirect
   124)
   125
   126replace (
   127	example.net/a v0.1.0 => ./a1
   128	example.net/a v0.2.0 => ./a2
   129	example.net/b v0.1.0 => ./b1
   130	example.net/c v0.1.0 => ./c1
   131	example.net/d v0.1.0 => ./d1
   132	example.net/d v0.2.0 => ./d2
   133)
   134-- example.go --
   135package example
   136
   137import (
   138	_ "example.net/a"
   139	_ "example.net/b"
   140)
   141-- a1/go.mod --
   142module example.net/a
   143
   144go 1.20
   145-- a1/a.go --
   146package a
   147-- a2/go.mod --
   148module example.net/a
   149
   150go 1.22.0
   151
   152toolchain go1.23.0
   153-- a2/a.go --
   154package a
   155-- b1/go.mod --
   156module example.net/b
   157
   158go 1.22.0
   159
   160toolchain go1.23.0
   161-- b1/b.go --
   162package b
   163
   164import _ "example.net/c"  // Note: module b is intentionally untidy, as if due to a bad git merge
   165-- c1/go.mod --
   166module example.net/c
   167
   168go 1.22.0
   169
   170require example.net/d v0.1.0
   171-- c1/c.go --
   172package c
   173
   174import _ "example.net/d"
   175-- d1/go.mod --
   176module example.net/d
   177
   178go 1.22.0
   179-- d1/d.go --
   180package d
   181-- d2/go.mod --
   182module example.net/d
   183
   184go 1.23.0
   185-- d2/d.go --
   186package d

View as plain text