-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcfg_test.go
165 lines (148 loc) · 3.99 KB
/
cfg_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
// 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")
}
os.Setenv("GORISCV64", "rva23u64")
if goriscv64() != 23 {
t.Errorf("Wrong parsing of RISCV64=rva23u64")
}
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
}
var goodFIPS = []string{
"v1.0.0",
"v1.0.1",
"v1.2.0",
"v1.2.3",
}
var badFIPS = []string{
"v1.0.0-fips",
"v1.0.0+fips",
"1.0.0",
"x1.0.0",
}
func TestIsFIPSVersion(t *testing.T) {
// good
for _, s := range goodFIPS {
if !isFIPSVersion(s) {
t.Errorf("isFIPSVersion(%q) = false, want true", s)
}
}
// truncated
const v = "v1.2.3"
for i := 0; i < len(v); i++ {
if isFIPSVersion(v[:i]) {
t.Errorf("isFIPSVersion(%q) = true, want false", v[:i])
}
}
// bad
for _, s := range badFIPS {
if isFIPSVersion(s) {
t.Errorf("isFIPSVersion(%q) = true, want false", s)
}
}
}