drop Go 1.21 and start using go/version

Needing to awkwardly treat Go versions as if they were semver
is no longer necessary thanks to go/version being in Go 1.22.0 now.
This commit is contained in:
Daniel Martí
2024-02-11 21:26:14 +00:00
committed by pagran
parent d76bc2eb47
commit ad2ecc7f2f
42 changed files with 75 additions and 253 deletions
+18 -18
View File
@@ -7,30 +7,30 @@ env PATH=${WORK}/.bin${:}${PATH}
# An empty go version.
env TOOLCHAIN_GOVERSION=''
! exec garble build
stderr 'Go version is too old; please upgrade to Go 1\.21 or newer'
stderr 'Go version is too old; please upgrade to go1\.22 or newer'
# We should error on a devel version that's too old.
# Note that they lacked the "goN.M-" prefix.
env TOOLCHAIN_GOVERSION='devel +afb5fca Sun Aug 07 00:00:00 2020 +0000'
! exec garble build
stderr 'Go version is too old; please upgrade to Go 1\.21 or newer'
stderr 'Go version is too old; please upgrade to go1\.22 or newer'
# Another form of old version; with an old "goN.M-" prefix.
env TOOLCHAIN_GOVERSION='devel go1.15-afb5fca Sun Aug 07 00:00:00 2020 +0000'
! exec garble build
stderr 'Go version "devel go1\.15-.*2020.*" is too old; please upgrade to Go 1\.21'
stderr 'Go version "devel go1\.15-.*2020.*" is too old; please upgrade to go1\.22'
# A current devel version should be fine.
# Note that we don't look at devel version timestamps.
env GARBLE_TEST_GOVERSION='go1.21'
env TOOLCHAIN_GOVERSION='devel go1.21-ad97d204f0 Sun Sep 12 16:46:58 2023 +0000'
env GARBLE_TEST_GOVERSION='go1.22'
env TOOLCHAIN_GOVERSION='devel go1.22-ad97d204f0 Sun Sep 12 16:46:58 2023 +0000'
! exec garble build
stderr 'mocking the real build'
# We should error on a stable version that's too old.
env TOOLCHAIN_GOVERSION='go1.14'
! exec garble build
stderr 'Go version "go1\.14" is too old; please upgrade to Go 1\.21 or newer'
stderr 'Go version "go1\.14" is too old; please upgrade to go1\.22 or newer'
# We should accept a future stable version.
# Note that we need to bump the version of Go that supposedly built it, too.
@@ -40,45 +40,45 @@ env TOOLCHAIN_GOVERSION='go1.28.2'
stderr 'mocking the real build'
# We should accept custom devel strings.
env TOOLCHAIN_GOVERSION='devel go1.22-somecustomversion'
env TOOLCHAIN_GOVERSION='devel go1.23-somecustomversion'
! exec garble build
stderr 'mocking the real build'
# The current toolchain may be older than the one that built garble.
env GARBLE_TEST_GOVERSION='go1.22'
env TOOLCHAIN_GOVERSION='go1.21.3'
env GARBLE_TEST_GOVERSION='go1.23'
env TOOLCHAIN_GOVERSION='go1.22.3'
! exec garble build
stderr 'mocking the real build'
# The current toolchain may be equal to the one that built garble.
env GARBLE_TEST_GOVERSION='devel go1.21-6673d5d701 Sun Mar 20 16:05:03 2023 +0000'
env TOOLCHAIN_GOVERSION='devel go1.21-6673d5d701 Sun Mar 20 16:05:03 2023 +0000'
env GARBLE_TEST_GOVERSION='devel go1.22-6673d5d701 Sun Mar 20 16:05:03 2023 +0000'
env TOOLCHAIN_GOVERSION='devel go1.22-6673d5d701 Sun Mar 20 16:05:03 2023 +0000'
! exec garble build
stderr 'mocking the real build'
# The current toolchain must not be newer than the one that built garble.
env GARBLE_TEST_GOVERSION='go1.18'
env TOOLCHAIN_GOVERSION='go1.21.1'
env TOOLCHAIN_GOVERSION='go1.22.1'
! exec garble build
stderr 'garble was built with "go1\.18" and is being used with "go1\.21\.1"; rebuild '
stderr 'garble was built with "go1\.18" and can''t be used with the newer "go1\.22\.1"; rebuild '
# We'll error even if the difference is a minor (bugfix) level.
# In practice it probably wouldn't matter, but in theory it could still lead to tricky bugs.
env GARBLE_TEST_GOVERSION='go1.21.11'
env TOOLCHAIN_GOVERSION='go1.21.14'
env GARBLE_TEST_GOVERSION='go1.22.11'
env TOOLCHAIN_GOVERSION='go1.22.14'
! exec garble build
stderr 'garble was built with "go1\.21\.11" and is being used with "go1\.21\.14"; rebuild '
stderr 'garble was built with "go1\.22\.11" and can''t be used with the newer "go1\.22\.14"; rebuild '
# If garble builds itself and is then used, it won't know what version built it.
# As a fallback, we drop the comparison against the toolchain's version.
env GARBLE_TEST_GOVERSION='bogus version'
env TOOLCHAIN_GOVERSION='go1.21.3'
env TOOLCHAIN_GOVERSION='go1.22.3'
! exec garble build
stderr 'mocking the real build'
-- go.mod --
module test/main
go 1.21
go 1.22
-- main.go --
package main