132 строки
2,4 КиБ
Go
132 строки
2,4 КиБ
Go
package compileopts
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestBuildTags(t *testing.T) {
|
|
tests := []struct {
|
|
targetTags []string
|
|
userTags []string
|
|
result []string
|
|
}{
|
|
{
|
|
targetTags: []string{},
|
|
userTags: []string{},
|
|
result: []string{
|
|
"tinygo",
|
|
"math_big_pure_go",
|
|
"gc.conservative",
|
|
"scheduler.none",
|
|
"serial.none",
|
|
},
|
|
},
|
|
{
|
|
targetTags: []string{"bear"},
|
|
userTags: []string{},
|
|
result: []string{
|
|
"bear",
|
|
"tinygo",
|
|
"math_big_pure_go",
|
|
"gc.conservative",
|
|
"scheduler.none",
|
|
"serial.none",
|
|
},
|
|
},
|
|
{
|
|
targetTags: []string{},
|
|
userTags: []string{"cat"},
|
|
result: []string{
|
|
"tinygo",
|
|
"math_big_pure_go",
|
|
"gc.conservative",
|
|
"scheduler.none",
|
|
"serial.none",
|
|
"cat",
|
|
},
|
|
},
|
|
{
|
|
targetTags: []string{"bear"},
|
|
userTags: []string{"cat"},
|
|
result: []string{
|
|
"bear",
|
|
"tinygo",
|
|
"math_big_pure_go",
|
|
"gc.conservative",
|
|
"scheduler.none",
|
|
"serial.none",
|
|
"cat",
|
|
},
|
|
},
|
|
{
|
|
targetTags: []string{"bear", "runtime_memhash_leveldb"},
|
|
userTags: []string{"cat"},
|
|
result: []string{
|
|
"bear",
|
|
"runtime_memhash_leveldb",
|
|
"tinygo",
|
|
"math_big_pure_go",
|
|
"gc.conservative",
|
|
"scheduler.none",
|
|
"serial.none",
|
|
"cat",
|
|
},
|
|
},
|
|
{
|
|
targetTags: []string{"bear", "runtime_memhash_leveldb"},
|
|
userTags: []string{"cat", "runtime_memhash_leveldb"},
|
|
result: []string{
|
|
"bear",
|
|
"tinygo",
|
|
"math_big_pure_go",
|
|
"gc.conservative",
|
|
"scheduler.none",
|
|
"serial.none",
|
|
"cat",
|
|
"runtime_memhash_leveldb",
|
|
},
|
|
},
|
|
{
|
|
targetTags: []string{"bear", "runtime_memhash_leveldb"},
|
|
userTags: []string{"cat", "runtime_memhash_sip"},
|
|
result: []string{
|
|
"bear",
|
|
"tinygo",
|
|
"math_big_pure_go",
|
|
"gc.conservative",
|
|
"scheduler.none",
|
|
"serial.none",
|
|
"cat",
|
|
"runtime_memhash_sip",
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
tt := tc
|
|
t.Run(fmt.Sprintf("%s+%s", strings.Join(tt.targetTags, ","), strings.Join(tt.userTags, ",")), func(t *testing.T) {
|
|
c := &Config{
|
|
Target: &TargetSpec{
|
|
BuildTags: tt.targetTags,
|
|
},
|
|
Options: &Options{
|
|
Tags: tt.userTags,
|
|
},
|
|
}
|
|
|
|
res := c.BuildTags()
|
|
|
|
if len(res) != len(tt.result) {
|
|
t.Errorf("expected %d tags, got %d", len(tt.result), len(res))
|
|
}
|
|
|
|
for i, tag := range tt.result {
|
|
if tag != res[i] {
|
|
t.Errorf("tag %d: expected %s, got %s", i, tt.result[i], tag)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|