diff --git a/pkg/kubectl/describe/versioned/describe.go b/pkg/kubectl/describe/versioned/describe.go index 5579521047b..2aa6bb133a8 100644 --- a/pkg/kubectl/describe/versioned/describe.go +++ b/pkg/kubectl/describe/versioned/describe.go @@ -29,6 +29,7 @@ import ( "strings" "text/tabwriter" "time" + "unicode" "github.com/fatih/camelcase" @@ -302,8 +303,15 @@ func printUnstructuredContent(w PrefixWriter, level int, content map[string]inte } func smartLabelFor(field string) string { - commonAcronyms := []string{"API", "URL", "UID", "OSB", "GUID"} + // skip creating smart label if field name contains + // special characters other than '-' + if strings.IndexFunc(field, func(r rune) bool { + return !unicode.IsLetter(r) && r != '-' + }) != -1 { + return field + } + commonAcronyms := []string{"API", "URL", "UID", "OSB", "GUID"} parts := camelcase.Split(field) result := make([]string, 0, len(parts)) for _, part := range parts { diff --git a/pkg/kubectl/describe/versioned/describe_test.go b/pkg/kubectl/describe/versioned/describe_test.go index f58c10373df..f4c6504d4de 100644 --- a/pkg/kubectl/describe/versioned/describe_test.go +++ b/pkg/kubectl/describe/versioned/describe_test.go @@ -2499,7 +2499,11 @@ func TestDescribeUnstructuredContent(t *testing.T) { }{ { expected: `API Version: v1 -Dummy 2: present +Dummy - Dummy: present +dummy-dummy@dummy: present +dummy/dummy: present +dummy2: present +Dummy Dummy: present Items: Item Bool: true Item Int: 42 @@ -2537,10 +2541,14 @@ URL: http://localhost w := NewPrefixWriter(out) obj := &unstructured.Unstructured{ Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "Test", - "dummy1": "present", - "dummy2": "present", + "apiVersion": "v1", + "kind": "Test", + "dummyDummy": "present", + "dummy/dummy": "present", + "dummy-dummy@dummy": "present", + "dummy-dummy": "present", + "dummy1": "present", + "dummy2": "present", "metadata": map[string]interface{}{ "name": "MyName", "namespace": "MyNamespace",