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
|
package provider
import (
"runtime"
"testing"
"github.com/containers/podman/v5/pkg/machine/define"
"github.com/stretchr/testify/assert"
)
func TestSupportedProviders(t *testing.T) {
switch runtime.GOOS {
case "darwin":
if runtime.GOARCH == "arm64" {
assert.Equal(t, []define.VMType{define.AppleHvVirt, define.LibKrun}, SupportedProviders())
} else {
assert.Equal(t, []define.VMType{define.AppleHvVirt}, SupportedProviders())
}
case "windows":
assert.Equal(t, []define.VMType{define.WSLVirt, define.HyperVVirt}, SupportedProviders())
case "linux":
assert.Equal(t, []define.VMType{define.QemuVirt}, SupportedProviders())
}
}
func TestInstalledProviders(t *testing.T) {
installed, err := InstalledProviders()
if err != nil {
t.Skipf("Failed to list installed providers: %v", err)
}
switch runtime.GOOS {
case "darwin":
// TODO: need to verify if an arm64 machine reports {applehv, libkrun}
assert.Equal(t, []define.VMType{define.AppleHvVirt}, installed)
case "windows":
provider, err := Get()
assert.NoError(t, err)
assert.Contains(t, installed, provider)
case "linux":
assert.Equal(t, []define.VMType{define.QemuVirt}, installed)
}
}
func TestHasPermsForProvider(t *testing.T) {
provider, err := Get()
assert.NoError(t, err)
assert.True(t, HasPermsForProvider(provider.VMType()))
}
func TestHasBadPerms(t *testing.T) {
switch runtime.GOOS {
case "darwin":
assert.False(t, HasPermsForProvider(define.QemuVirt))
case "windows":
assert.False(t, HasPermsForProvider(define.QemuVirt))
case "linux":
assert.False(t, HasPermsForProvider(define.AppleHvVirt))
}
}
func TestBadSupportedProviders(t *testing.T) {
switch runtime.GOOS {
case "darwin":
assert.NotEqual(t, []define.VMType{define.QemuVirt}, SupportedProviders())
if runtime.GOARCH != "arm64" {
assert.NotEqual(t, []define.VMType{define.AppleHvVirt, define.LibKrun}, SupportedProviders())
}
case "windows":
assert.NotEqual(t, []define.VMType{define.QemuVirt}, SupportedProviders())
case "linux":
assert.NotEqual(t, []define.VMType{define.AppleHvVirt}, SupportedProviders())
}
}
func TestBadInstalledProviders(t *testing.T) {
installed, err := InstalledProviders()
if err != nil {
t.Skipf("Failed to list installed providers: %v", err)
}
switch runtime.GOOS {
case "darwin":
assert.NotEqual(t, []define.VMType{define.QemuVirt}, installed)
if runtime.GOARCH != "arm64" {
assert.NotEqual(t, []define.VMType{define.AppleHvVirt, define.LibKrun}, installed)
}
case "windows":
assert.NotContains(t, installed, define.QemuVirt)
case "linux":
assert.NotEqual(t, []define.VMType{define.AppleHvVirt}, installed)
}
}
|