@ -7,18 +7,18 @@ env PATH=${WORK}/.bin${:}${PATH}
# An empty go version.
env TOOLCHAIN_GOVERSION=''
! garble build
stderr 'Go version is too old; please upgrade to Go 1\.17 \.x or a newer devel version'
stderr 'Go version is too old; please upgrade to Go 1\.18 \.x or a newer devel version'
# 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'
! garble build
stderr 'Go version is too old; please upgrade to Go 1\.17 \.x or a newer devel version'
stderr 'Go version is too old; please upgrade to Go 1\.18 \.x or a newer devel version'
# 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'
! garble build
stderr 'Go version "devel go1\.15-.*2020.*" is too old; please upgrade to Go 1\.17 \.x'
stderr 'Go version "devel go1\.15-.*2020.*" is too old; please upgrade to Go 1\.18 \.x'
# A current devel version should be fine.
# Note that we don't look at devel version timestamps.
@ -30,7 +30,7 @@ stderr 'mocking the real build'
# We should error on a stable version that's too old.
env TOOLCHAIN_GOVERSION='go1.14'
! garble build
stderr 'Go version "go1\.14" is too old; please upgrade to Go 1\.17 \.x'
stderr 'Go version "go1\.14" is too old; please upgrade to Go 1\.18 \.x'
! stderr 'or a newer devel version'
# We should accept a future stable version.
@ -46,8 +46,8 @@ env TOOLCHAIN_GOVERSION='devel go1.18-somecustomversion'
stderr 'mocking the real build'
# The current toolchain may be older than the one that built garble.
env GARBLE_TEST_GOVERSION='go1.18 '
env TOOLCHAIN_GOVERSION='go1.17 .3'
env GARBLE_TEST_GOVERSION='go1.19 '
env TOOLCHAIN_GOVERSION='go1.18 .3'
! garble build
stderr 'mocking the real build'
@ -58,10 +58,10 @@ env TOOLCHAIN_GOVERSION='devel go1.19-6673d5d701 Sun Mar 20 16:05:03 2022 +0000'
stderr 'mocking the real build'
# The current toolchain must not be newer than the one that built garble.
env GARBLE_TEST_GOVERSION='go1.17 '
env TOOLCHAIN_GOVERSION='go1.18 .1'
env GARBLE_TEST_GOVERSION='go1.18 '
env TOOLCHAIN_GOVERSION='go1.19 .1'
! garble build
stderr 'garble was built with "go1\.17" and is being used with "go1\.18 \.1"; please rebuild garble with the newer version'
stderr 'garble was built with "go1\.18" and is being used with "go1\.19 \.1"; please rebuild garble with the newer version'
# 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.
@ -73,14 +73,14 @@ stderr 'garble was built with "go1\.18\.11" and is being used with "go1\.18\.14"
# 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.17 .3'
env TOOLCHAIN_GOVERSION='go1.18 .3'
! garble build
stderr 'mocking the real build'
-- go.mod --
module test/main
go 1.17
go 1.18
-- main.go --
package main