mirror of https://github.com/k3s-io/k3s
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
3.7 KiB
129 lines
3.7 KiB
package configfilearg |
|
|
|
import ( |
|
"os" |
|
"reflect" |
|
"testing" |
|
) |
|
|
|
func Test_UnitMustParse(t *testing.T) { |
|
tests := []struct { |
|
name string |
|
args []string |
|
config string |
|
want []string |
|
}{ |
|
{ |
|
name: "Basic server", |
|
args: []string{"k3s", "server"}, |
|
|
|
want: []string{"k3s", "server"}, |
|
}, |
|
{ |
|
name: "Server with known flags", |
|
args: []string{"k3s", "server", "-t 12345", "--write-kubeconfig-mode 644"}, |
|
|
|
want: []string{"k3s", "server", "-t 12345", "--write-kubeconfig-mode 644"}, |
|
}, |
|
{ |
|
name: "Server with known flags and config with known and unknown flags", |
|
args: []string{"k3s", "server", "--write-kubeconfig-mode 644"}, |
|
config: "./testdata/defaultdata.yaml", |
|
want: []string{"k3s", "server", "--token=12345", "--node-label=DEAFBEEF", |
|
"--etcd-s3=true", "--etcd-s3-bucket=my-backup", "--kubelet-arg=max-pods=999", "--write-kubeconfig-mode 644"}, |
|
}, |
|
{ |
|
name: "Basic etcd-snapshot", |
|
args: []string{"k3s", "etcd-snapshot", "save"}, |
|
|
|
want: []string{"k3s", "etcd-snapshot", "save"}, |
|
}, |
|
{ |
|
name: "Etcd-snapshot with known flags", |
|
args: []string{"k3s", "etcd-snapshot", "save", "--s3=true"}, |
|
|
|
want: []string{"k3s", "etcd-snapshot", "save", "--s3=true"}, |
|
}, |
|
{ |
|
name: "Etcd-snapshot with config with known and unknown flags", |
|
args: []string{"k3s", "etcd-snapshot", "save"}, |
|
config: "./testdata/defaultdata.yaml", |
|
want: []string{"k3s", "etcd-snapshot", "save", "--etcd-s3=true", "--etcd-s3-bucket=my-backup"}, |
|
}, |
|
{ |
|
name: "Agent with known flags", |
|
args: []string{"k3s", "agent", "--token=12345"}, |
|
|
|
want: []string{"k3s", "agent", "--token=12345"}, |
|
}, |
|
{ |
|
name: "Agent with config with known and unknown flags, flags are not skipped", |
|
args: []string{"k3s", "agent"}, |
|
config: "./testdata/defaultdata.yaml", |
|
want: []string{"k3s", "agent", "--token=12345", "--node-label=DEAFBEEF", |
|
"--etcd-s3=true", "--etcd-s3-bucket=my-backup", "--notaflag=true", "--kubelet-arg=max-pods=999"}, |
|
}, |
|
} |
|
for _, tt := range tests { |
|
t.Run(tt.name, func(t *testing.T) { |
|
DefaultParser.DefaultConfig = tt.config |
|
if got := MustParse(tt.args); !reflect.DeepEqual(got, tt.want) { |
|
t.Errorf("MustParse() = %+v\nWant = %+v", got, tt.want) |
|
} |
|
}) |
|
} |
|
} |
|
|
|
func Test_UnitMustFindString(t *testing.T) { |
|
tests := []struct { |
|
name string |
|
args []string |
|
target string |
|
setup func() error // Optional, delete if unused |
|
teardown func() error // Optional, delete if unused |
|
want string |
|
}{ |
|
{ |
|
name: "Target not found in config file", |
|
args: []string{"--foo", "bar"}, |
|
target: "token", |
|
|
|
want: "", |
|
|
|
setup: func() error { return os.Setenv("K3S_CONFIG_FILE", "./testdata/data.yaml") }, |
|
teardown: func() error { return os.Unsetenv("K3S_CONFIG_FILE") }, |
|
}, |
|
{ |
|
name: "Target found in config file", |
|
args: []string{"--foo", "bar"}, |
|
target: "token", |
|
|
|
want: "12345", |
|
|
|
setup: func() error { return os.Setenv("K3S_CONFIG_FILE", "./testdata/defaultdata.yaml") }, |
|
teardown: func() error { return os.Unsetenv("K3S_CONFIG_FILE") }, |
|
}, |
|
{ |
|
name: "Override flag found, function is short-circuited", |
|
args: []string{"--foo", "bar", "-h"}, |
|
target: "token", |
|
|
|
want: "-h", |
|
|
|
setup: func() error { return os.Setenv("K3S_CONFIG_FILE", "./testdata/defaultdata.yaml") }, |
|
teardown: func() error { return os.Unsetenv("K3S_CONFIG_FILE") }, |
|
}, |
|
} |
|
for _, tt := range tests { |
|
t.Run(tt.name, func(t *testing.T) { |
|
defer tt.teardown() |
|
if err := tt.setup(); err != nil { |
|
t.Errorf("Setup for MustFindString() failed = %v", err) |
|
return |
|
} |
|
if got := MustFindString(tt.args, tt.target); got != tt.want { |
|
t.Errorf("MustFindString() = %+v\nWant = %+v", got, tt.want) |
|
} |
|
}) |
|
} |
|
}
|
|
|