You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
garble/testdata/scripts/goversion.txt

75 lines
1.9 KiB
Plaintext

# We use a simple Go program to report many Go versions.
# The program also errors on any command other than "go version",
# which saves us having to rebuild main.go many times.
go build -o .bin/go$exe ./fakego
env PATH=${WORK}/.bin${:}${PATH}
# An empty go version.
env GOVERSION=''
! garble build
stderr 'Go version is too old; please upgrade to Go 1.17.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 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'
# Another form of old version; with an old "goN.M-" prefix.
env GOVERSION='devel go1.15-afb5fca Sun Aug 07 00:00:00 2020 +0000'
! garble build
stderr 'Go version "go1.15" is too old; please upgrade to Go 1.17.x'
# A current devel version should be fine
env GOVERSION='devel go1.18-ad97d204f0 Sun Sep 12 16:46:58 2021 +0000'
! garble build
stderr 'mocking the real build'
# We should error on a stable version that's too old.
env GOVERSION='go1.14'
! garble build
stderr 'Go version "go1.14" is too old; please upgrade to Go 1.17.x'
! stderr 'or a newer devel version'
# We should accept a future stable version.
env GOVERSION='go1.18.2'
! garble build
stderr 'mocking the real build'
# We should accept custom devel strings.
env GOVERSION='devel go1.18-somecustomversion'
! garble build
stderr 'mocking the real build'
-- go.mod --
module test/main
go 1.17
-- main.go --
package main
func main() {}
-- fakego/main.go --
package main
import (
"encoding/json"
"fmt"
"os"
)
func main() {
if len(os.Args) > 0 && os.Args[1] == "env" {
enc, _ := json.Marshal(struct{
GOVERSION string
} {
GOVERSION: os.Getenv("GOVERSION"),
})
fmt.Printf("%s\n", enc)
return
}
fmt.Fprintln(os.Stderr, "mocking the real build")
os.Exit(1)
}