mirror of
https://github.com/hanzoai/container.git
synced 2026-10-30 15:06:01 +00:00
121 lines
3.5 KiB
Go
121 lines
3.5 KiB
Go
package lima
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/abiosoft/colima/config"
|
|
"github.com/abiosoft/colima/environment/vm/lima/limaconfig"
|
|
"github.com/abiosoft/colima/util"
|
|
"github.com/abiosoft/colima/util/fsutil"
|
|
)
|
|
|
|
func Test_checkOverlappingMounts(t *testing.T) {
|
|
type args struct {
|
|
mounts []string
|
|
}
|
|
tests := []struct {
|
|
args args
|
|
wantErr bool
|
|
}{
|
|
{args: args{mounts: []string{"/User", "/User/something"}}, wantErr: true},
|
|
{args: args{mounts: []string{"/User/one", "/User/two"}}, wantErr: false},
|
|
{args: args{mounts: []string{"/User/one", "/User/one_other"}}, wantErr: false},
|
|
{args: args{mounts: []string{"/User/one_other", "/User/one"}}, wantErr: false},
|
|
{args: args{mounts: []string{"/User/one", "/User/one/other"}}, wantErr: true},
|
|
{args: args{mounts: []string{"/User/one/", "/User/one"}}, wantErr: true},
|
|
{args: args{mounts: []string{"/User/one/", "/User/two", "User/one"}}, wantErr: true},
|
|
{args: args{mounts: []string{"/home/a/b/c", "/home/b/c/a", "/home/c/a/b"}}, wantErr: false},
|
|
}
|
|
for i, tt := range tests {
|
|
t.Run(fmt.Sprint(i), func(t *testing.T) {
|
|
mounts := func(mounts []string) (mnts []config.Mount) {
|
|
for _, m := range mounts {
|
|
mnts = append(mnts, config.Mount{Location: m})
|
|
}
|
|
return
|
|
}(tt.args.mounts)
|
|
if err := checkOverlappingMounts(mounts); (err != nil) != tt.wantErr {
|
|
t.Errorf("checkOverlappingMounts() error = %v, wantErr %v", err, tt.wantErr)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_config_Mounts(t *testing.T) {
|
|
fsutil.FS = fsutil.FakeFS
|
|
tests := []struct {
|
|
mounts []string
|
|
isDefault bool
|
|
includesCache bool
|
|
}{
|
|
{mounts: []string{"/User/user", "/tmp/another"}},
|
|
{mounts: []string{"/User/another", "/User/something", "/User/else"}},
|
|
{isDefault: true},
|
|
{mounts: []string{util.HomeDir()}, includesCache: true},
|
|
}
|
|
for i, tt := range tests {
|
|
t.Run(fmt.Sprint(i), func(t *testing.T) {
|
|
mounts := func(mounts []string) (mnts []config.Mount) {
|
|
for _, m := range mounts {
|
|
mnts = append(mnts, config.Mount{Location: m})
|
|
}
|
|
return
|
|
}(tt.mounts)
|
|
conf, err := newConf(context.Background(), config.Config{Mounts: mounts})
|
|
if err != nil {
|
|
t.Error(err)
|
|
return
|
|
}
|
|
|
|
expectedLocations := tt.mounts
|
|
if tt.isDefault {
|
|
expectedLocations = []string{"~", "/tmp/colima"}
|
|
} else if !tt.includesCache {
|
|
expectedLocations = append([]string{config.CacheDir()}, tt.mounts...)
|
|
}
|
|
|
|
sameMounts := func(expectedLocations []string, mounts []limaconfig.Mount) bool {
|
|
sanitize := func(s string) string { return strings.TrimSuffix(s, "/") + "/" }
|
|
for i, m := range mounts {
|
|
if sanitize(m.Location) != sanitize(expectedLocations[i]) {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}(expectedLocations, conf.Mounts)
|
|
if !sameMounts {
|
|
foundLocations := func() (locations []string) {
|
|
for _, m := range conf.Mounts {
|
|
locations = append(locations, m.Location)
|
|
}
|
|
return
|
|
}()
|
|
t.Errorf("got: %+v, want: %v", foundLocations, expectedLocations)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_ingressDisabled(t *testing.T) {
|
|
tests := []struct {
|
|
args []string
|
|
want bool
|
|
}{
|
|
{args: []string{"--flag=f", "--another", "flag"}, want: false},
|
|
{args: []string{"--disable=traefik", "--version=3"}, want: true},
|
|
{args: []string{}, want: false},
|
|
{args: []string{"--disable", "traefik", "--one=two"}, want: true},
|
|
}
|
|
for i, tt := range tests {
|
|
t.Run(strconv.Itoa(i+1), func(t *testing.T) {
|
|
if got := ingressDisabled(tt.args); got != tt.want {
|
|
t.Errorf("ingressDisabled() = %v, want %v", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|