| # Create basic modules and work space. |
| env TESTGO_VERSION=go1.50 |
| mkdir m1_22_0 |
| go mod init -C m1_22_0 |
| go mod edit -C m1_22_0 -go=1.22.0 -toolchain=go1.99.0 |
| mkdir m1_22_1 |
| go mod init -C m1_22_1 |
| go mod edit -C m1_22_1 -go=1.22.1 -toolchain=go1.99.1 |
| mkdir m1_24_rc0 |
| go mod init -C m1_24_rc0 |
| go mod edit -C m1_24_rc0 -go=1.24rc0 -toolchain=go1.99.2 |
| |
| go work init ./m1_22_0 ./m1_22_1 |
| grep '^go 1.50$' go.work |
| ! grep toolchain go.work |
| |
| # work sync with older modules should leave go 1.50 in the go.work. |
| go work sync |
| cat go.work |
| grep '^go 1.50$' go.work |
| ! grep toolchain go.work |
| |
| # work sync with newer modules should update go 1.21 -> 1.22.1 and toolchain -> go1.22.9 in go.work |
| env TESTGO_VERSION=go1.21 |
| env TESTGO_VERSION_SWITCH=switch |
| go work edit -go=1.21 |
| grep '^go 1.21$' go.work |
| ! grep toolchain go.work |
| env GOTOOLCHAIN=local |
| ! go work sync |
| stderr '^go: cannot load module m1_22_0 listed in go.work file: m1_22_0'${/}'go.mod requires go >= 1.22.0 \(running go 1.21; GOTOOLCHAIN=local\)$' |
| stderr '^go: cannot load module m1_22_1 listed in go.work file: m1_22_1'${/}'go.mod requires go >= 1.22.1 \(running go 1.21; GOTOOLCHAIN=local\)$' |
| env GOTOOLCHAIN=auto |
| go work sync |
| stderr '^go: m1_22_1'${/}'go.mod requires go >= 1.22.1; switching to go1.22.9$' |
| grep '^go 1.22.1$' go.work |
| grep '^toolchain go1.22.9$' go.work |
| |
| # work sync with newer modules should update go 1.22.1 -> 1.24rc1 and drop toolchain |
| go work edit -use=./m1_24_rc0 |
| go work sync |
| stderr '^go: m1_24_rc0'${/}'go.mod requires go >= 1.24rc0; switching to go1.24rc1$' |
| cat go.work |
| grep '^go 1.24rc0$' go.work |
| grep '^toolchain go1.24rc1$' go.work |