mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 03:11:40 +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 = [
|
||||
"//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/unstructured:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||
],
|
||||
|
@ -21,7 +21,6 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"regexp"
|
||||
"testing"
|
||||
|
||||
yaml "gopkg.in/yaml.v2"
|
||||
@ -69,113 +68,6 @@ func (in *TestStruct) DeepCopyObject() runtime.Object {
|
||||
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 {
|
||||
Data string
|
||||
}
|
||||
@ -189,17 +81,6 @@ func (obj *TestPrintType) DeepCopyObject() runtime.Object {
|
||||
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.
|
||||
func testPrinter(t *testing.T, printer printers.ResourcePrinter, unmarshalFunc func(data []byte, v interface{}) error) {
|
||||
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)
|
||||
}
|
||||
|
||||
printer := printers.NewTablePrinter(printers.PrintOptions{})
|
||||
buffer := &bytes.Buffer{}
|
||||
err = printer.PrintObj(table, buffer)
|
||||
if err != nil {
|
||||
t.Fatalf("An error occurred printing the Table: %#v", err)
|
||||
expectedTable := &metav1.Table{
|
||||
ColumnDefinitions: []metav1.TableColumnDefinition{{Name: "Data"}},
|
||||
Rows: []metav1.TableRow{{Cells: []interface{}{"test object"}}},
|
||||
}
|
||||
|
||||
expectedOutput := "DATA\ntest object\n"
|
||||
if buffer.String() != expectedOutput {
|
||||
t.Errorf("The data was not printed as expected. Expected:\n%s\nGot:\n%s", expectedOutput, buffer.String())
|
||||
if !reflect.DeepEqual(expectedTable, table) {
|
||||
t.Errorf("Error generating table from custom type. Expected (%#v), got (%#v)", expectedTable, table)
|
||||
}
|
||||
}
|
||||
|
||||
@ -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) {
|
||||
tmpl := `{{and ((index .currentState.info "foo").state.running.startedAt) .currentState.info.net.state.running.startedAt}}`
|
||||
printer, err := genericprinters.NewGoTemplatePrinter([]byte(tmpl))
|
||||
|
@ -18,10 +18,12 @@ package printers
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"regexp"
|
||||
"testing"
|
||||
|
||||
corev1 "k8s.io/api/core/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/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