mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Relocate tableprinter tests (#84027)
* Moves TestPrintUnstructuredObject to tableprinter_test.go * Move TestUnknownTypePrinting to correct location of tableprinter_test.go * Removes NewTablePrinter from TestCustomTypePrinting
This commit is contained in:
parent
397f8b4248
commit
37fca51d74
@ -53,6 +53,7 @@ go_test(
|
|||||||
deps = [
|
deps = [
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||||
],
|
],
|
||||||
|
@ -21,7 +21,6 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
"regexp"
|
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
yaml "gopkg.in/yaml.v2"
|
yaml "gopkg.in/yaml.v2"
|
||||||
@ -69,113 +68,6 @@ func (in *TestStruct) DeepCopyObject() runtime.Object {
|
|||||||
panic("never called")
|
panic("never called")
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(seans3): Move this test to tableprinter_test.go
|
|
||||||
func TestPrintUnstructuredObject(t *testing.T) {
|
|
||||||
obj := &unstructured.Unstructured{
|
|
||||||
Object: map[string]interface{}{
|
|
||||||
"apiVersion": "v1",
|
|
||||||
"kind": "Test",
|
|
||||||
"dummy1": "present",
|
|
||||||
"dummy2": "present",
|
|
||||||
"metadata": map[string]interface{}{
|
|
||||||
"name": "MyName",
|
|
||||||
"namespace": "MyNamespace",
|
|
||||||
"creationTimestamp": "2017-04-01T00:00:00Z",
|
|
||||||
"resourceVersion": 123,
|
|
||||||
"uid": "00000000-0000-0000-0000-000000000001",
|
|
||||||
"dummy3": "present",
|
|
||||||
"labels": map[string]interface{}{"test": "other"},
|
|
||||||
},
|
|
||||||
/*"items": []interface{}{
|
|
||||||
map[string]interface{}{
|
|
||||||
"itemBool": true,
|
|
||||||
"itemInt": 42,
|
|
||||||
},
|
|
||||||
},*/
|
|
||||||
"url": "http://localhost",
|
|
||||||
"status": "ok",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
tests := []struct {
|
|
||||||
expected string
|
|
||||||
options printers.PrintOptions
|
|
||||||
object runtime.Object
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
expected: "NAME\\s+AGE\nMyName\\s+\\d+",
|
|
||||||
object: obj,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
options: printers.PrintOptions{
|
|
||||||
WithNamespace: true,
|
|
||||||
},
|
|
||||||
expected: "NAMESPACE\\s+NAME\\s+AGE\nMyNamespace\\s+MyName\\s+\\d+",
|
|
||||||
object: obj,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
options: printers.PrintOptions{
|
|
||||||
ShowLabels: true,
|
|
||||||
WithNamespace: true,
|
|
||||||
},
|
|
||||||
expected: "NAMESPACE\\s+NAME\\s+AGE\\s+LABELS\nMyNamespace\\s+MyName\\s+\\d+\\w+\\s+test\\=other",
|
|
||||||
object: obj,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
expected: "NAME\\s+AGE\nMyName\\s+\\d+\\w+\nMyName2\\s+\\d+",
|
|
||||||
object: &unstructured.Unstructured{
|
|
||||||
Object: map[string]interface{}{
|
|
||||||
"apiVersion": "v1",
|
|
||||||
"kind": "Test",
|
|
||||||
"dummy1": "present",
|
|
||||||
"dummy2": "present",
|
|
||||||
"items": []interface{}{
|
|
||||||
map[string]interface{}{
|
|
||||||
"metadata": map[string]interface{}{
|
|
||||||
"name": "MyName",
|
|
||||||
"namespace": "MyNamespace",
|
|
||||||
"creationTimestamp": "2017-04-01T00:00:00Z",
|
|
||||||
"resourceVersion": 123,
|
|
||||||
"uid": "00000000-0000-0000-0000-000000000001",
|
|
||||||
"dummy3": "present",
|
|
||||||
"labels": map[string]interface{}{"test": "other"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
map[string]interface{}{
|
|
||||||
"metadata": map[string]interface{}{
|
|
||||||
"name": "MyName2",
|
|
||||||
"namespace": "MyNamespace",
|
|
||||||
"creationTimestamp": "2017-04-01T00:00:00Z",
|
|
||||||
"resourceVersion": 123,
|
|
||||||
"uid": "00000000-0000-0000-0000-000000000001",
|
|
||||||
"dummy3": "present",
|
|
||||||
"labels": "badlabel",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"url": "http://localhost",
|
|
||||||
"status": "ok",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
out := bytes.NewBuffer([]byte{})
|
|
||||||
|
|
||||||
for _, test := range tests {
|
|
||||||
out.Reset()
|
|
||||||
printer := printers.NewTablePrinter(test.options)
|
|
||||||
printer.PrintObj(test.object, out)
|
|
||||||
|
|
||||||
matches, err := regexp.MatchString(test.expected, out.String())
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
if !matches {
|
|
||||||
t.Errorf("wanted:\n%s\ngot:\n%s", test.expected, out)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type TestPrintType struct {
|
type TestPrintType struct {
|
||||||
Data string
|
Data string
|
||||||
}
|
}
|
||||||
@ -189,17 +81,6 @@ func (obj *TestPrintType) DeepCopyObject() runtime.Object {
|
|||||||
return &clone
|
return &clone
|
||||||
}
|
}
|
||||||
|
|
||||||
type TestUnknownType struct{}
|
|
||||||
|
|
||||||
func (obj *TestUnknownType) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
|
|
||||||
func (obj *TestUnknownType) DeepCopyObject() runtime.Object {
|
|
||||||
if obj == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
clone := *obj
|
|
||||||
return &clone
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO(seans3): Move this test to cli-runtime/pkg/printers.
|
// TODO(seans3): Move this test to cli-runtime/pkg/printers.
|
||||||
func testPrinter(t *testing.T, printer printers.ResourcePrinter, unmarshalFunc func(data []byte, v interface{}) error) {
|
func testPrinter(t *testing.T, printer printers.ResourcePrinter, unmarshalFunc func(data []byte, v interface{}) error) {
|
||||||
buf := bytes.NewBuffer([]byte{})
|
buf := bytes.NewBuffer([]byte{})
|
||||||
@ -301,16 +182,12 @@ func TestCustomTypePrinting(t *testing.T) {
|
|||||||
t.Fatalf("An error occurred generating the table for custom type: %#v", err)
|
t.Fatalf("An error occurred generating the table for custom type: %#v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
printer := printers.NewTablePrinter(printers.PrintOptions{})
|
expectedTable := &metav1.Table{
|
||||||
buffer := &bytes.Buffer{}
|
ColumnDefinitions: []metav1.TableColumnDefinition{{Name: "Data"}},
|
||||||
err = printer.PrintObj(table, buffer)
|
Rows: []metav1.TableRow{{Cells: []interface{}{"test object"}}},
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("An error occurred printing the Table: %#v", err)
|
|
||||||
}
|
}
|
||||||
|
if !reflect.DeepEqual(expectedTable, table) {
|
||||||
expectedOutput := "DATA\ntest object\n"
|
t.Errorf("Error generating table from custom type. Expected (%#v), got (%#v)", expectedTable, table)
|
||||||
if buffer.String() != expectedOutput {
|
|
||||||
t.Errorf("The data was not printed as expected. Expected:\n%s\nGot:\n%s", expectedOutput, buffer.String())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -325,15 +202,6 @@ func TestPrintHandlerError(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUnknownTypePrinting(t *testing.T) {
|
|
||||||
printer := printers.NewTablePrinter(printers.PrintOptions{})
|
|
||||||
buffer := &bytes.Buffer{}
|
|
||||||
err := printer.PrintObj(&TestUnknownType{}, buffer)
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("An error was expected from printing unknown type")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestTemplatePanic(t *testing.T) {
|
func TestTemplatePanic(t *testing.T) {
|
||||||
tmpl := `{{and ((index .currentState.info "foo").state.running.startedAt) .currentState.info.net.state.running.startedAt}}`
|
tmpl := `{{and ((index .currentState.info "foo").state.running.startedAt) .currentState.info.net.state.running.startedAt}}`
|
||||||
printer, err := genericprinters.NewGoTemplatePrinter([]byte(tmpl))
|
printer, err := genericprinters.NewGoTemplatePrinter([]byte(tmpl))
|
||||||
|
@ -18,10 +18,12 @@ package printers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"regexp"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
)
|
)
|
||||||
@ -594,3 +596,129 @@ Added test1 1/1 podPhase 5 20h
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestPrintUnstructuredObject(t *testing.T) {
|
||||||
|
obj := &unstructured.Unstructured{
|
||||||
|
Object: map[string]interface{}{
|
||||||
|
"apiVersion": "v1",
|
||||||
|
"kind": "Test",
|
||||||
|
"dummy1": "present",
|
||||||
|
"dummy2": "present",
|
||||||
|
"metadata": map[string]interface{}{
|
||||||
|
"name": "MyName",
|
||||||
|
"namespace": "MyNamespace",
|
||||||
|
"creationTimestamp": "2017-04-01T00:00:00Z",
|
||||||
|
"resourceVersion": 123,
|
||||||
|
"uid": "00000000-0000-0000-0000-000000000001",
|
||||||
|
"dummy3": "present",
|
||||||
|
"labels": map[string]interface{}{"test": "other"},
|
||||||
|
},
|
||||||
|
/*"items": []interface{}{
|
||||||
|
map[string]interface{}{
|
||||||
|
"itemBool": true,
|
||||||
|
"itemInt": 42,
|
||||||
|
},
|
||||||
|
},*/
|
||||||
|
"url": "http://localhost",
|
||||||
|
"status": "ok",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
expected string
|
||||||
|
options PrintOptions
|
||||||
|
object runtime.Object
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
expected: "NAME\\s+AGE\nMyName\\s+\\d+",
|
||||||
|
object: obj,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
options: PrintOptions{
|
||||||
|
WithNamespace: true,
|
||||||
|
},
|
||||||
|
expected: "NAMESPACE\\s+NAME\\s+AGE\nMyNamespace\\s+MyName\\s+\\d+",
|
||||||
|
object: obj,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
options: PrintOptions{
|
||||||
|
ShowLabels: true,
|
||||||
|
WithNamespace: true,
|
||||||
|
},
|
||||||
|
expected: "NAMESPACE\\s+NAME\\s+AGE\\s+LABELS\nMyNamespace\\s+MyName\\s+\\d+\\w+\\s+test\\=other",
|
||||||
|
object: obj,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
expected: "NAME\\s+AGE\nMyName\\s+\\d+\\w+\nMyName2\\s+\\d+",
|
||||||
|
object: &unstructured.Unstructured{
|
||||||
|
Object: map[string]interface{}{
|
||||||
|
"apiVersion": "v1",
|
||||||
|
"kind": "Test",
|
||||||
|
"dummy1": "present",
|
||||||
|
"dummy2": "present",
|
||||||
|
"items": []interface{}{
|
||||||
|
map[string]interface{}{
|
||||||
|
"metadata": map[string]interface{}{
|
||||||
|
"name": "MyName",
|
||||||
|
"namespace": "MyNamespace",
|
||||||
|
"creationTimestamp": "2017-04-01T00:00:00Z",
|
||||||
|
"resourceVersion": 123,
|
||||||
|
"uid": "00000000-0000-0000-0000-000000000001",
|
||||||
|
"dummy3": "present",
|
||||||
|
"labels": map[string]interface{}{"test": "other"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
map[string]interface{}{
|
||||||
|
"metadata": map[string]interface{}{
|
||||||
|
"name": "MyName2",
|
||||||
|
"namespace": "MyNamespace",
|
||||||
|
"creationTimestamp": "2017-04-01T00:00:00Z",
|
||||||
|
"resourceVersion": 123,
|
||||||
|
"uid": "00000000-0000-0000-0000-000000000001",
|
||||||
|
"dummy3": "present",
|
||||||
|
"labels": "badlabel",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"url": "http://localhost",
|
||||||
|
"status": "ok",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
out := bytes.NewBuffer([]byte{})
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
out.Reset()
|
||||||
|
printer := NewTablePrinter(test.options)
|
||||||
|
printer.PrintObj(test.object, out)
|
||||||
|
|
||||||
|
matches, err := regexp.MatchString(test.expected, out.String())
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
if !matches {
|
||||||
|
t.Errorf("wanted:\n%s\ngot:\n%s", test.expected, out)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type TestUnknownType struct{}
|
||||||
|
|
||||||
|
func (obj *TestUnknownType) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
|
||||||
|
func (obj *TestUnknownType) DeepCopyObject() runtime.Object {
|
||||||
|
if obj == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
clone := *obj
|
||||||
|
return &clone
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestUnknownTypePrinting(t *testing.T) {
|
||||||
|
printer := NewTablePrinter(PrintOptions{})
|
||||||
|
buffer := &bytes.Buffer{}
|
||||||
|
err := printer.PrintObj(&TestUnknownType{}, buffer)
|
||||||
|
if err == nil {
|
||||||
|
t.Errorf("An error was expected from printing unknown type")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user