blob: b1ee314a3b705f1e18b37a0456f680ab2667f000 [file] [log] [blame]
// 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 main
import (
"testing"
"github.com/google/go-cmp/cmp"
)
func TestHostTypeToVersion(t *testing.T) {
testCases := []struct {
desc string
hostType string
wantVersion *Version
}{
{
desc: "valid original darwin host type",
hostType: "host-darwin-amd64-10_14",
wantVersion: &Version{
Major: 10,
Minor: 14,
Arch: "amd64",
},
},
{
desc: "valid original darwin host type",
hostType: "host-darwin-amd64-10_15",
wantVersion: &Version{
Major: 10,
Minor: 15,
Arch: "amd64",
},
},
{
desc: "valid newer darwin host ARM64",
hostType: "host-darwin-arm64-11_0",
wantVersion: &Version{
Major: 11,
Minor: 0,
Arch: "arm64",
},
},
{
desc: "valid newer darwin host AMD64",
hostType: "host-darwin-amd64-11_1",
wantVersion: &Version{
Major: 11,
Minor: 1,
Arch: "amd64",
},
},
{
desc: "valid newer darwin host AMD64",
hostType: "host-darwin-amd64-13",
wantVersion: &Version{
Major: 13,
Minor: 0,
Arch: "amd64",
},
},
}
for _, tc := range testCases {
t.Run(tc.desc, func(t *testing.T) {
got, err := hostTypeToVersion(tc.hostType)
if err != nil {
t.Fatalf("hostTypeToVersion(%q) = %v, %s; want no error", tc.hostType, got, err)
}
if diff := cmp.Diff(tc.wantVersion, got); diff != "" {
t.Errorf("hostTypeToVersion(%q) = (-want +got):\n%s", tc.hostType, diff)
}
})
}
}
func TestHostTypeToVersionError(t *testing.T) {
testCases := []struct {
desc string
hostType string
wantErr error
}{
{
desc: "empty string",
hostType: "",
},
{
desc: "invalid newer darwin host ARM64",
hostType: "host-darwin-amd64-11_1-toothrot",
},
}
for _, tc := range testCases {
t.Run(tc.desc, func(t *testing.T) {
if got, gotErr := hostTypeToVersion(tc.hostType); got != nil || gotErr == nil {
t.Errorf("hostTypeToVersion(%q) = %+v, %s; want nil, error", tc.hostType, got, gotErr)
}
})
}
}
func TestHostOnMacStadium(t *testing.T) {
testCases := []struct {
desc string
hostType string
want bool
}{
{
desc: "empty string",
hostType: "",
want: false,
},
{
desc: "valid original darwin host",
hostType: "host-darwin-amd64-10_14",
want: true,
},
{
desc: "valid newer darwin host",
hostType: "host-darwin-amd64-11_0",
want: true,
},
{
desc: "invalid newer darwin host type",
hostType: "host-darwin-arm64-11_0-toothrot",
want: false,
},
}
for _, tc := range testCases {
t.Run(tc.desc, func(t *testing.T) {
if got := hostOnMacStadium(tc.hostType); got != tc.want {
t.Errorf("hostOnMacStadium(%q) = %t; want %t", tc.hostType, got, tc.want)
}
})
}
}
func TestVMNameReg(t *testing.T) {
testCases := []struct {
desc string
vmName string
want bool
}{
{
desc: "empty string",
vmName: "",
want: false,
},
{
desc: "invalid original darwin host",
vmName: "mac_10_11_host01b",
want: false,
},
{
desc: "valid newer darwin host",
vmName: "mac_11_12_amd64_host01b",
want: true,
},
{
desc: "valid newer darwin host",
vmName: "mac_11_20_amd64_host05a",
want: true,
},
{
desc: "invalid newer darwin host type",
vmName: "host-darwin-arm64-11_0-toothrot",
want: false,
},
{
desc: "invalid bastion host",
vmName: "dns_server",
want: false,
},
}
for _, tc := range testCases {
t.Run(tc.desc, func(t *testing.T) {
if got := vmNameReg.MatchString(tc.vmName); got != tc.want {
t.Errorf("vmNameReg.MatchString(%q) = %t; want %t", tc.vmName, got, tc.want)
}
})
}
}