mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 03:41:45 +00:00
kubeadm config images list: test structured output
Implemented tests for 'kubeadm config images list' structured output.
This commit is contained in:
parent
23e4d05083
commit
a31ccc7b99
@ -31,9 +31,11 @@ import (
|
||||
"github.com/lithammer/dedent"
|
||||
"github.com/spf13/cobra"
|
||||
kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2"
|
||||
outputapischeme "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/scheme"
|
||||
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
||||
kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
|
||||
configutil "k8s.io/kubernetes/cmd/kubeadm/app/util/config"
|
||||
"k8s.io/kubernetes/cmd/kubeadm/app/util/output"
|
||||
utilruntime "k8s.io/kubernetes/cmd/kubeadm/app/util/runtime"
|
||||
"k8s.io/utils/exec"
|
||||
fakeexec "k8s.io/utils/exec/testing"
|
||||
@ -94,6 +96,12 @@ func TestImagesListRunWithCustomConfigPath(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
outputFlags := output.NewOutputFlags(&imageTextPrintFlags{}).WithTypeSetter(outputapischeme.Scheme).WithDefaultOutput(output.TextOutput)
|
||||
printer, err := outputFlags.ToPrinter()
|
||||
if err != nil {
|
||||
t.Fatalf("can't create printer for the output format %s: %+v", output.TextOutput, err)
|
||||
}
|
||||
|
||||
for _, tc := range testcases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
tmpDir, err := ioutil.TempDir("", "kubeadm-images-test")
|
||||
@ -114,7 +122,7 @@ func TestImagesListRunWithCustomConfigPath(t *testing.T) {
|
||||
t.Fatalf("Failed getting the kubeadm images command: %v", err)
|
||||
}
|
||||
var output bytes.Buffer
|
||||
if i.Run(&output) != nil {
|
||||
if err = i.Run(&output, printer); err != nil {
|
||||
t.Fatalf("Error from running the images command: %v", err)
|
||||
}
|
||||
actual := strings.Split(output.String(), "\n")
|
||||
@ -175,6 +183,11 @@ func TestConfigImagesListRunWithoutPath(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
outputFlags := output.NewOutputFlags(&imageTextPrintFlags{}).WithTypeSetter(outputapischeme.Scheme).WithDefaultOutput(output.TextOutput)
|
||||
printer, err := outputFlags.ToPrinter()
|
||||
if err != nil {
|
||||
t.Fatalf("can't create printer for the output format %s: %+v", output.TextOutput, err)
|
||||
}
|
||||
for _, tc := range testcases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
i, err := NewImagesList("", &tc.cfg)
|
||||
@ -183,7 +196,8 @@ func TestConfigImagesListRunWithoutPath(t *testing.T) {
|
||||
}
|
||||
|
||||
var output bytes.Buffer
|
||||
if i.Run(&output) != nil {
|
||||
|
||||
if err = i.Run(&output, printer); err != nil {
|
||||
t.Fatalf("did not expect an error running the Images command: %v", err)
|
||||
}
|
||||
|
||||
@ -195,6 +209,119 @@ func TestConfigImagesListRunWithoutPath(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestConfigImagesListOutput(t *testing.T) {
|
||||
testcases := []struct {
|
||||
name string
|
||||
cfg kubeadmapiv1beta2.ClusterConfiguration
|
||||
outputFormat string
|
||||
expectedOutput string
|
||||
}{
|
||||
{
|
||||
name: "text output",
|
||||
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
||||
KubernetesVersion: dummyKubernetesVersion,
|
||||
},
|
||||
outputFormat: "text",
|
||||
expectedOutput: `k8s.gcr.io/kube-apiserver:v1.16.0
|
||||
k8s.gcr.io/kube-controller-manager:v1.16.0
|
||||
k8s.gcr.io/kube-scheduler:v1.16.0
|
||||
k8s.gcr.io/kube-proxy:v1.16.0
|
||||
k8s.gcr.io/pause:3.2
|
||||
k8s.gcr.io/etcd:3.3.17-0
|
||||
k8s.gcr.io/coredns:1.6.5
|
||||
`,
|
||||
},
|
||||
{
|
||||
name: "JSON output",
|
||||
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
||||
KubernetesVersion: dummyKubernetesVersion,
|
||||
},
|
||||
outputFormat: "json",
|
||||
expectedOutput: `{
|
||||
"kind": "Images",
|
||||
"apiVersion": "output.kubeadm.k8s.io/v1alpha1",
|
||||
"images": [
|
||||
"k8s.gcr.io/kube-apiserver:v1.16.0",
|
||||
"k8s.gcr.io/kube-controller-manager:v1.16.0",
|
||||
"k8s.gcr.io/kube-scheduler:v1.16.0",
|
||||
"k8s.gcr.io/kube-proxy:v1.16.0",
|
||||
"k8s.gcr.io/pause:3.2",
|
||||
"k8s.gcr.io/etcd:3.3.17-0",
|
||||
"k8s.gcr.io/coredns:1.6.5"
|
||||
]
|
||||
}
|
||||
`,
|
||||
},
|
||||
{
|
||||
name: "YAML output",
|
||||
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
||||
KubernetesVersion: dummyKubernetesVersion,
|
||||
},
|
||||
outputFormat: "yaml",
|
||||
expectedOutput: `apiVersion: output.kubeadm.k8s.io/v1alpha1
|
||||
images:
|
||||
- k8s.gcr.io/kube-apiserver:v1.16.0
|
||||
- k8s.gcr.io/kube-controller-manager:v1.16.0
|
||||
- k8s.gcr.io/kube-scheduler:v1.16.0
|
||||
- k8s.gcr.io/kube-proxy:v1.16.0
|
||||
- k8s.gcr.io/pause:3.2
|
||||
- k8s.gcr.io/etcd:3.3.17-0
|
||||
- k8s.gcr.io/coredns:1.6.5
|
||||
kind: Images
|
||||
`,
|
||||
},
|
||||
{
|
||||
name: "go-template output",
|
||||
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
||||
KubernetesVersion: dummyKubernetesVersion,
|
||||
},
|
||||
outputFormat: `go-template={{range .images}}{{.}}{{"\n"}}{{end}}`,
|
||||
expectedOutput: `k8s.gcr.io/kube-apiserver:v1.16.0
|
||||
k8s.gcr.io/kube-controller-manager:v1.16.0
|
||||
k8s.gcr.io/kube-scheduler:v1.16.0
|
||||
k8s.gcr.io/kube-proxy:v1.16.0
|
||||
k8s.gcr.io/pause:3.2
|
||||
k8s.gcr.io/etcd:3.3.17-0
|
||||
k8s.gcr.io/coredns:1.6.5
|
||||
`,
|
||||
},
|
||||
{
|
||||
name: "JSONPATH output",
|
||||
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
||||
KubernetesVersion: dummyKubernetesVersion,
|
||||
},
|
||||
outputFormat: `jsonpath={range.images[*]}{@} {end}`,
|
||||
expectedOutput: "k8s.gcr.io/kube-apiserver:v1.16.0 k8s.gcr.io/kube-controller-manager:v1.16.0 k8s.gcr.io/kube-scheduler:v1.16.0 " +
|
||||
"k8s.gcr.io/kube-proxy:v1.16.0 k8s.gcr.io/pause:3.2 k8s.gcr.io/etcd:3.3.17-0 k8s.gcr.io/coredns:1.6.5 ",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testcases {
|
||||
outputFlags := output.NewOutputFlags(&imageTextPrintFlags{}).WithTypeSetter(outputapischeme.Scheme).WithDefaultOutput(tc.outputFormat)
|
||||
printer, err := outputFlags.ToPrinter()
|
||||
if err != nil {
|
||||
t.Fatalf("can't create printer for the output format %s: %+v", tc.outputFormat, err)
|
||||
}
|
||||
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
i, err := NewImagesList("", &tc.cfg)
|
||||
if err != nil {
|
||||
t.Fatalf("did not expect an error while creating the Images command: %v", err)
|
||||
}
|
||||
|
||||
var output bytes.Buffer
|
||||
|
||||
if err = i.Run(&output, printer); err != nil {
|
||||
t.Fatalf("did not expect an error running the Images command: %v", err)
|
||||
}
|
||||
|
||||
if output.String() != tc.expectedOutput {
|
||||
t.Fatalf("unexpected output:\n|%s|\nexpected:\n|%s|\n", output.String(), tc.expectedOutput)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestImagesPull(t *testing.T) {
|
||||
fcmd := fakeexec.FakeCmd{
|
||||
CombinedOutputScript: []fakeexec.FakeAction{
|
||||
|
Loading…
Reference in New Issue
Block a user