From ae386f3143c6f950f90e9f02e0e87acf7ea1c5ce Mon Sep 17 00:00:00 2001 From: Peter Swica Date: Fri, 7 Jun 2019 01:13:40 -0400 Subject: [PATCH] kubectl config set hangs on some invalid property names #415 --- pkg/kubectl/cmd/config/navigation_step_parser.go | 2 ++ .../cmd/config/navigation_step_parser_test.go | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/pkg/kubectl/cmd/config/navigation_step_parser.go b/pkg/kubectl/cmd/config/navigation_step_parser.go index 0345c79dd70..0899589ad37 100644 --- a/pkg/kubectl/cmd/config/navigation_step_parser.go +++ b/pkg/kubectl/cmd/config/navigation_step_parser.go @@ -76,6 +76,8 @@ func newNavigationSteps(path string) (*navigationSteps, error) { steps = append(steps, navigationStep{nextPart, fieldType}) currPartIndex += len(strings.Split(nextPart, ".")) currType = fieldType + default: + return nil, fmt.Errorf("unable to parse one or more field values of %v", path) } } diff --git a/pkg/kubectl/cmd/config/navigation_step_parser_test.go b/pkg/kubectl/cmd/config/navigation_step_parser_test.go index a468c5c9df0..2ce0892cd2a 100644 --- a/pkg/kubectl/cmd/config/navigation_step_parser_test.go +++ b/pkg/kubectl/cmd/config/navigation_step_parser_test.go @@ -72,6 +72,18 @@ func TestParseWithBadValue(t *testing.T) { test.run(t) } +func TestParseWithNoMatchingValue(t *testing.T) { + test := stepParserTest{ + path: "users.jheiss.exec.command", + expectedNavigationSteps: navigationSteps{ + steps: []navigationStep{}, + }, + expectedError: "unable to parse one or more field values of users.jheiss.exec", + } + + test.run(t) +} + func (test stepParserTest) run(t *testing.T) { actualSteps, err := newNavigationSteps(test.path) if len(test.expectedError) != 0 {