| // Copyright 2021 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package buildcfg |
| |
| import ( |
| "os" |
| "testing" |
| ) |
| |
| func TestConfigFlags(t *testing.T) { |
| os.Setenv("GOAMD64", "v1") |
| if goamd64() != 1 { |
| t.Errorf("Wrong parsing of GOAMD64=v1") |
| } |
| os.Setenv("GOAMD64", "v4") |
| if goamd64() != 4 { |
| t.Errorf("Wrong parsing of GOAMD64=v4") |
| } |
| Error = nil |
| os.Setenv("GOAMD64", "1") |
| if goamd64(); Error == nil { |
| t.Errorf("Wrong parsing of GOAMD64=1") |
| } |
| |
| os.Setenv("GORISCV64", "rva20u64") |
| if goriscv64() != 20 { |
| t.Errorf("Wrong parsing of RISCV64=rva20u64") |
| } |
| os.Setenv("GORISCV64", "rva22u64") |
| if goriscv64() != 22 { |
| t.Errorf("Wrong parsing of RISCV64=rva22u64") |
| } |
| Error = nil |
| os.Setenv("GORISCV64", "rva22") |
| if _ = goriscv64(); Error == nil { |
| t.Errorf("Wrong parsing of RISCV64=rva22") |
| } |
| Error = nil |
| os.Setenv("GOARM64", "v7.0") |
| if _ = goarm64(); Error == nil { |
| t.Errorf("Wrong parsing of GOARM64=7.0") |
| } |
| Error = nil |
| os.Setenv("GOARM64", "8.0") |
| if _ = goarm64(); Error == nil { |
| t.Errorf("Wrong parsing of GOARM64=8.0") |
| } |
| Error = nil |
| os.Setenv("GOARM64", "v8.0,lsb") |
| if _ = goarm64(); Error == nil { |
| t.Errorf("Wrong parsing of GOARM64=v8.0,lsb") |
| } |
| os.Setenv("GOARM64", "v8.0,lse") |
| if goarm64().Version != "v8.0" || goarm64().LSE != true || goarm64().Crypto != false { |
| t.Errorf("Wrong parsing of GOARM64=v8.0,lse") |
| } |
| os.Setenv("GOARM64", "v8.0,crypto") |
| if goarm64().Version != "v8.0" || goarm64().LSE != false || goarm64().Crypto != true { |
| t.Errorf("Wrong parsing of GOARM64=v8.0,crypto") |
| } |
| os.Setenv("GOARM64", "v8.0,crypto,lse") |
| if goarm64().Version != "v8.0" || goarm64().LSE != true || goarm64().Crypto != true { |
| t.Errorf("Wrong parsing of GOARM64=v8.0,crypto,lse") |
| } |
| os.Setenv("GOARM64", "v8.0,lse,crypto") |
| if goarm64().Version != "v8.0" || goarm64().LSE != true || goarm64().Crypto != true { |
| t.Errorf("Wrong parsing of GOARM64=v8.0,lse,crypto") |
| } |
| os.Setenv("GOARM64", "v9.0") |
| if goarm64().Version != "v9.0" || goarm64().LSE != true || goarm64().Crypto != false { |
| t.Errorf("Wrong parsing of GOARM64=v9.0") |
| } |
| } |
| |
| func TestGoarm64FeaturesSupports(t *testing.T) { |
| g, _ := ParseGoarm64("v9.3") |
| |
| if !g.Supports("v9.3") { |
| t.Errorf("Wrong goarm64Features.Supports for v9.3, v9.3") |
| } |
| |
| if g.Supports("v9.4") { |
| t.Errorf("Wrong goarm64Features.Supports for v9.3, v9.4") |
| } |
| |
| if !g.Supports("v8.8") { |
| t.Errorf("Wrong goarm64Features.Supports for v9.3, v8.8") |
| } |
| |
| if g.Supports("v8.9") { |
| t.Errorf("Wrong goarm64Features.Supports for v9.3, v8.9") |
| } |
| |
| if g.Supports(",lse") { |
| t.Errorf("Wrong goarm64Features.Supports for v9.3, ,lse") |
| } |
| } |
| |
| func TestGogoarchTags(t *testing.T) { |
| old_goarch := GOARCH |
| old_goarm64 := GOARM64 |
| |
| GOARCH = "arm64" |
| |
| os.Setenv("GOARM64", "v9.5") |
| GOARM64 = goarm64() |
| tags := gogoarchTags() |
| want := []string{"arm64.v9.0", "arm64.v9.1", "arm64.v9.2", "arm64.v9.3", "arm64.v9.4", "arm64.v9.5", |
| "arm64.v8.0", "arm64.v8.1", "arm64.v8.2", "arm64.v8.3", "arm64.v8.4", "arm64.v8.5", "arm64.v8.6", "arm64.v8.7", "arm64.v8.8", "arm64.v8.9"} |
| if len(tags) != len(want) { |
| t.Errorf("Wrong number of tags for GOARM64=v9.5") |
| } else { |
| for i, v := range tags { |
| if v != want[i] { |
| t.Error("Wrong tags for GOARM64=v9.5") |
| break |
| } |
| } |
| } |
| |
| GOARCH = old_goarch |
| GOARM64 = old_goarm64 |
| } |