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 }