podman/pkg/machine/qemu/config_test.go

137 lines
2.7 KiB
Go

//go:build (amd64 && !windows) || (arm64 && !windows)
// +build amd64,!windows arm64,!windows
package qemu
import (
"os"
"path/filepath"
"reflect"
"testing"
"github.com/containers/podman/v4/pkg/machine"
"github.com/containers/podman/v4/test/utils"
)
func TestMachineFile_GetPath(t *testing.T) {
path := "/var/tmp/podman/my.sock"
sym := "/tmp/podman/my.sock"
type fields struct {
Path string
Symlink *string
}
tests := []struct {
name string
fields fields
want string
}{
{
name: "Original path",
fields: fields{path, nil},
want: path,
},
{
name: "Symlink over path",
fields: fields{
Path: path,
Symlink: &sym,
},
want: sym,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
m := &machine.VMFile{
Path: tt.fields.Path, //nolint: scopelint
Symlink: tt.fields.Symlink, //nolint: scopelint
}
if got := m.GetPath(); got != tt.want { //nolint: scopelint
t.Errorf("GetPath() = %v, want %v", got, tt.want) //nolint: scopelint
}
})
}
}
func TestNewMachineFile(t *testing.T) {
empty := ""
homedir := t.TempDir()
longTemp := t.TempDir()
oldhome := os.Getenv("HOME")
os.Setenv("HOME", homedir) //nolint: tenv
defer os.Setenv("HOME", oldhome)
p := "/var/tmp/podman/my.sock"
longp := filepath.Join(longTemp, utils.RandomString(100), "my.sock")
err := os.MkdirAll(filepath.Dir(longp), 0755)
if err != nil {
panic(err)
}
f, err := os.Create(longp)
if err != nil {
panic(err)
}
_ = f.Close()
sym := "my.sock"
longSym := filepath.Join(homedir, ".podman", sym)
m := machine.VMFile{
Path: p,
Symlink: nil,
}
type args struct {
path string
symlink *string
}
tests := []struct {
name string
args args
want *machine.VMFile
wantErr bool
}{
{
name: "Good",
args: args{path: p},
want: &m,
wantErr: false,
},
{
name: "Good with short symlink",
args: args{p, &sym},
want: &machine.VMFile{Path: p},
wantErr: false,
},
{
name: "Bad path name",
args: args{empty, nil},
want: nil,
wantErr: true,
},
{
name: "Bad symlink name",
args: args{p, &empty},
want: nil,
wantErr: true,
},
{
name: "Good with long symlink",
args: args{longp, &sym},
want: &machine.VMFile{Path: longp, Symlink: &longSym},
wantErr: false,
},
}
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
got, err := machine.NewMachineFile(tt.args.path, tt.args.symlink)
if (err != nil) != tt.wantErr {
t.Errorf("NewMachineFile() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("NewMachineFile() got = %v, want %v", got, tt.want)
}
})
}
}