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