mirror of https://github.com/docker/buildx.git
175 lines
4.4 KiB
Go
175 lines
4.4 KiB
Go
|
package commands
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
func TestTruncPlatforms(t *testing.T) {
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
platforms []string
|
||
|
max int
|
||
|
expectedList map[string][]string
|
||
|
expectedOut string
|
||
|
}{
|
||
|
{
|
||
|
name: "arm64 preferred and emulated",
|
||
|
platforms: []string{"linux/arm64*", "linux/amd64", "linux/amd64/v2", "linux/riscv64", "linux/ppc64le", "linux/s390x", "linux/386", "linux/mips64le", "linux/mips64", "linux/arm/v7", "linux/arm/v6"},
|
||
|
max: 4,
|
||
|
expectedList: map[string][]string{
|
||
|
"linux/amd64": {
|
||
|
"linux/amd64",
|
||
|
"linux/amd64/v2",
|
||
|
},
|
||
|
"linux/arm": {
|
||
|
"linux/arm/v7",
|
||
|
"linux/arm/v6",
|
||
|
},
|
||
|
"linux/arm64": {
|
||
|
"linux/arm64*",
|
||
|
},
|
||
|
"linux/ppc64le": {
|
||
|
"linux/ppc64le",
|
||
|
},
|
||
|
},
|
||
|
expectedOut: "linux/amd64 (+2), linux/arm64*, linux/arm (+2), linux/ppc64le, (5 more)",
|
||
|
},
|
||
|
{
|
||
|
name: "riscv64 preferred only",
|
||
|
platforms: []string{"linux/riscv64*"},
|
||
|
max: 4,
|
||
|
expectedList: map[string][]string{
|
||
|
"linux/riscv64": {
|
||
|
"linux/riscv64*",
|
||
|
},
|
||
|
},
|
||
|
expectedOut: "linux/riscv64*",
|
||
|
},
|
||
|
{
|
||
|
name: "amd64 no preferred and emulated",
|
||
|
platforms: []string{"linux/amd64", "linux/amd64/v2", "linux/amd64/v3", "linux/386", "linux/arm64", "linux/riscv64", "linux/ppc64le", "linux/s390x", "linux/mips64le", "linux/mips64", "linux/arm/v7", "linux/arm/v6"},
|
||
|
max: 4,
|
||
|
expectedList: map[string][]string{
|
||
|
"linux/amd64": {
|
||
|
"linux/amd64",
|
||
|
"linux/amd64/v2",
|
||
|
"linux/amd64/v3",
|
||
|
},
|
||
|
"linux/arm": {
|
||
|
"linux/arm/v7",
|
||
|
"linux/arm/v6",
|
||
|
},
|
||
|
"linux/arm64": {
|
||
|
"linux/arm64",
|
||
|
},
|
||
|
"linux/ppc64le": {
|
||
|
"linux/ppc64le",
|
||
|
}},
|
||
|
expectedOut: "linux/amd64 (+3), linux/arm64, linux/arm (+2), linux/ppc64le, (5 more)",
|
||
|
},
|
||
|
{
|
||
|
name: "amd64 no preferred",
|
||
|
platforms: []string{"linux/amd64", "linux/386"},
|
||
|
max: 4,
|
||
|
expectedList: map[string][]string{
|
||
|
"linux/386": {
|
||
|
"linux/386",
|
||
|
},
|
||
|
"linux/amd64": {
|
||
|
"linux/amd64",
|
||
|
},
|
||
|
},
|
||
|
expectedOut: "linux/amd64, linux/386",
|
||
|
},
|
||
|
{
|
||
|
name: "arm64 no preferred",
|
||
|
platforms: []string{"linux/arm64", "linux/arm/v7", "linux/arm/v6"},
|
||
|
max: 4,
|
||
|
expectedList: map[string][]string{
|
||
|
"linux/arm": {
|
||
|
"linux/arm/v7",
|
||
|
"linux/arm/v6",
|
||
|
},
|
||
|
"linux/arm64": {
|
||
|
"linux/arm64",
|
||
|
},
|
||
|
},
|
||
|
expectedOut: "linux/arm64, linux/arm (+2)",
|
||
|
},
|
||
|
{
|
||
|
name: "all preferred",
|
||
|
platforms: []string{"darwin/arm64*", "linux/arm64*", "linux/arm/v5*", "linux/arm/v6*", "linux/arm/v7*", "windows/arm64*"},
|
||
|
max: 4,
|
||
|
expectedList: map[string][]string{
|
||
|
"darwin/arm64": {
|
||
|
"darwin/arm64*",
|
||
|
},
|
||
|
"linux/arm": {
|
||
|
"linux/arm/v5*",
|
||
|
"linux/arm/v6*",
|
||
|
"linux/arm/v7*",
|
||
|
},
|
||
|
"linux/arm64": {
|
||
|
"linux/arm64*",
|
||
|
},
|
||
|
"windows/arm64": {
|
||
|
"windows/arm64*",
|
||
|
},
|
||
|
},
|
||
|
expectedOut: "linux/arm64*, linux/arm* (+3), darwin/arm64*, windows/arm64*",
|
||
|
},
|
||
|
{
|
||
|
name: "no major preferred",
|
||
|
platforms: []string{"linux/amd64/v2*", "linux/arm/v6*", "linux/mips64le*", "linux/amd64", "linux/amd64/v3", "linux/386", "linux/arm64", "linux/riscv64", "linux/ppc64le", "linux/s390x", "linux/mips64", "linux/arm/v7"},
|
||
|
max: 4,
|
||
|
expectedList: map[string][]string{
|
||
|
"linux/amd64": {
|
||
|
"linux/amd64/v2*",
|
||
|
"linux/amd64",
|
||
|
"linux/amd64/v3",
|
||
|
},
|
||
|
"linux/arm": {
|
||
|
"linux/arm/v6*",
|
||
|
"linux/arm/v7",
|
||
|
},
|
||
|
"linux/arm64": {
|
||
|
"linux/arm64",
|
||
|
},
|
||
|
"linux/ppc64le": {
|
||
|
"linux/ppc64le",
|
||
|
},
|
||
|
},
|
||
|
expectedOut: "linux/amd64* (+3), linux/arm64, linux/arm* (+2), linux/ppc64le, (5 more)",
|
||
|
},
|
||
|
{
|
||
|
name: "no major with multiple variants",
|
||
|
platforms: []string{"linux/arm64", "linux/arm/v7", "linux/arm/v6", "linux/mips64le/softfloat", "linux/mips64le/hardfloat"},
|
||
|
max: 4,
|
||
|
expectedList: map[string][]string{
|
||
|
"linux/arm": {
|
||
|
"linux/arm/v7",
|
||
|
"linux/arm/v6",
|
||
|
},
|
||
|
"linux/arm64": {
|
||
|
"linux/arm64",
|
||
|
},
|
||
|
"linux/mips64le": {
|
||
|
"linux/mips64le/softfloat",
|
||
|
"linux/mips64le/hardfloat",
|
||
|
},
|
||
|
},
|
||
|
expectedOut: "linux/arm64, linux/arm (+2), linux/mips64le (+2)",
|
||
|
},
|
||
|
}
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
tpfs := truncPlatforms(tt.platforms, tt.max)
|
||
|
assert.Equal(t, tt.expectedList, tpfs.List())
|
||
|
assert.Equal(t, tt.expectedOut, tpfs.String())
|
||
|
})
|
||
|
}
|
||
|
}
|