diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/wait/wait.go b/staging/src/k8s.io/kubectl/pkg/cmd/wait/wait.go index efbe2957e97..a247ebb0e9a 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/wait/wait.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/wait/wait.go @@ -195,8 +195,8 @@ func conditionFuncFor(condition string, errOut io.Writer) (ConditionFunc, error) case lowercaseCond == "create": return IsCreated, nil - case strings.HasPrefix(lowercaseCond, "condition="): - conditionName := lowercaseCond[len("condition="):] + case strings.HasPrefix(condition, "condition="): + conditionName := strings.TrimPrefix(condition, "condition=") conditionValue := "true" if equalsIndex := strings.Index(conditionName, "="); equalsIndex != -1 { conditionValue = conditionName[equalsIndex+1:] @@ -209,8 +209,8 @@ func conditionFuncFor(condition string, errOut io.Writer) (ConditionFunc, error) errOut: errOut, }.IsConditionMet, nil - case strings.HasPrefix(lowercaseCond, "jsonpath="): - jsonPathInput := strings.TrimPrefix(lowercaseCond, "jsonpath=") + case strings.HasPrefix(condition, "jsonpath="): + jsonPathInput := strings.TrimPrefix(condition, "jsonpath=") jsonPathExp, jsonPathValue, err := processJSONPathInput(jsonPathInput) if err != nil { return nil, err diff --git a/test/cmd/wait.sh b/test/cmd/wait.sh index 4c3dd8a2ad7..2578d4bd6fd 100644 --- a/test/cmd/wait.sh +++ b/test/cmd/wait.sh @@ -51,6 +51,12 @@ run_wait_tests() { # Post-Condition: Wait failed kube::test::if_has_string "${output_message}" 'timed out' + # wait with mixed case jsonpath + output_message=$(kubectl wait --for=jsonpath=.status.unavailableReplicas=1 deploy/test-1 2>&1) + + # Post-Condition: Wait failed + kube::test::if_has_string "${output_message}" 'test-1 condition met' + # Delete all deployments async to kubectl wait ( sleep 2 && kubectl delete deployment --all ) &