github.com/hanks177/podman/v4@v4.1.3-0.20220613032544-16d90015bc83/pkg/machine/qemu/config_test.go (about)

     1  package qemu
     2  
     3  import (
     4  	"os"
     5  	"path/filepath"
     6  	"reflect"
     7  	"testing"
     8  
     9  	"github.com/hanks177/podman/v4/pkg/machine"
    10  	"github.com/hanks177/podman/v4/test/utils"
    11  )
    12  
    13  func TestMachineFile_GetPath(t *testing.T) {
    14  	path := "/var/tmp/podman/my.sock"
    15  	sym := "/tmp/podman/my.sock"
    16  	type fields struct {
    17  		Path    string
    18  		Symlink *string
    19  	}
    20  	tests := []struct {
    21  		name   string
    22  		fields fields
    23  		want   string
    24  	}{
    25  		{
    26  			name:   "Original path",
    27  			fields: fields{path, nil},
    28  			want:   path,
    29  		},
    30  		{
    31  			name: "Symlink over path",
    32  			fields: fields{
    33  				Path:    path,
    34  				Symlink: &sym,
    35  			},
    36  			want: sym,
    37  		},
    38  	}
    39  	for _, tt := range tests {
    40  		t.Run(tt.name, func(t *testing.T) {
    41  			m := &machine.VMFile{
    42  				Path:    tt.fields.Path,    //nolint: scopelint
    43  				Symlink: tt.fields.Symlink, //nolint: scopelint
    44  			}
    45  			if got := m.GetPath(); got != tt.want { //nolint: scopelint
    46  				t.Errorf("GetPath() = %v, want %v", got, tt.want) //nolint: scopelint
    47  			}
    48  		})
    49  	}
    50  }
    51  
    52  func TestNewMachineFile(t *testing.T) {
    53  	empty := ""
    54  
    55  	homedir := t.TempDir()
    56  	longTemp := t.TempDir()
    57  	oldhome := os.Getenv("HOME")
    58  	os.Setenv("HOME", homedir) //nolint: tenv
    59  	defer os.Setenv("HOME", oldhome)
    60  
    61  	p := "/var/tmp/podman/my.sock"
    62  	longp := filepath.Join(longTemp, utils.RandomString(100), "my.sock")
    63  	err := os.MkdirAll(filepath.Dir(longp), 0755)
    64  	if err != nil {
    65  		panic(err)
    66  	}
    67  	f, err := os.Create(longp)
    68  	if err != nil {
    69  		panic(err)
    70  	}
    71  	_ = f.Close()
    72  	sym := "my.sock"
    73  	longSym := filepath.Join(homedir, ".podman", sym)
    74  
    75  	m := machine.VMFile{
    76  		Path:    p,
    77  		Symlink: nil,
    78  	}
    79  	type args struct {
    80  		path    string
    81  		symlink *string
    82  	}
    83  	tests := []struct {
    84  		name    string
    85  		args    args
    86  		want    *machine.VMFile
    87  		wantErr bool
    88  	}{
    89  		{
    90  			name:    "Good",
    91  			args:    args{path: p},
    92  			want:    &m,
    93  			wantErr: false,
    94  		},
    95  		{
    96  			name:    "Good with short symlink",
    97  			args:    args{p, &sym},
    98  			want:    &machine.VMFile{Path: p},
    99  			wantErr: false,
   100  		},
   101  		{
   102  			name:    "Bad path name",
   103  			args:    args{empty, nil},
   104  			want:    nil,
   105  			wantErr: true,
   106  		},
   107  		{
   108  			name:    "Bad symlink name",
   109  			args:    args{p, &empty},
   110  			want:    nil,
   111  			wantErr: true,
   112  		},
   113  		{
   114  			name:    "Good with long symlink",
   115  			args:    args{longp, &sym},
   116  			want:    &machine.VMFile{Path: longp, Symlink: &longSym},
   117  			wantErr: false,
   118  		},
   119  	}
   120  	for _, tt := range tests {
   121  		tt := tt
   122  		t.Run(tt.name, func(t *testing.T) {
   123  			got, err := machine.NewMachineFile(tt.args.path, tt.args.symlink)
   124  			if (err != nil) != tt.wantErr {
   125  				t.Errorf("NewMachineFile() error = %v, wantErr %v", err, tt.wantErr)
   126  				return
   127  			}
   128  			if !reflect.DeepEqual(got, tt.want) {
   129  				t.Errorf("NewMachineFile() got = %v, want %v", got, tt.want)
   130  			}
   131  		})
   132  	}
   133  }