mirror of
https://github.com/containers/podman.git
synced 2025-08-06 19:44:14 +08:00

Machine can only run on amd64 and arm64 platforms so we need to make sure the test are only run on those platforms. We do not have CI checks for this but it fails in debian build infra since debian supports many other architectures as well. Signed-off-by: Paul Holzinger <pholzing@redhat.com>
137 lines
2.7 KiB
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)
|
|
}
|
|
})
|
|
}
|
|
}
|