| // 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) |
| } |
| }) |
| } |
| } |