diff --git a/staging/src/k8s.io/apimachinery/pkg/util/validation/field/errors.go b/staging/src/k8s.io/apimachinery/pkg/util/validation/field/errors.go index 39f13e34765..f2a983aebf6 100644 --- a/staging/src/k8s.io/apimachinery/pkg/util/validation/field/errors.go +++ b/staging/src/k8s.io/apimachinery/pkg/util/validation/field/errors.go @@ -107,8 +107,8 @@ func (e *Error) ErrorBody() string { s = fmt.Sprintf("%s: %s", e.Type, valstr) } default: - // NOTE: This panics if we find a code that truly is not supported. - s = e.Type.String() + internal := InternalError(nil, fmt.Errorf("unhandled error code: %s: please report this", e.Type)) + s = internal.ErrorBody() } if len(e.Detail) != 0 { s += fmt.Sprintf(": %s", e.Detail) @@ -195,7 +195,7 @@ func (t ErrorType) String() string { case ErrorTypeTypeInvalid: return "Invalid value" default: - panic(fmt.Sprintf("unrecognized validation error: %q", string(t))) + return fmt.Sprintf("", string(t)) } } diff --git a/staging/src/k8s.io/apimachinery/pkg/util/validation/field/errors_test.go b/staging/src/k8s.io/apimachinery/pkg/util/validation/field/errors_test.go index a1b57c1c5f7..a8c7052f9fb 100644 --- a/staging/src/k8s.io/apimachinery/pkg/util/validation/field/errors_test.go +++ b/staging/src/k8s.io/apimachinery/pkg/util/validation/field/errors_test.go @@ -630,6 +630,17 @@ func TestErrorFormatting(t *testing.T) { CoveredByDeclarative: true, }, expect: `path.to.field: Invalid value: field.SelfMarshalerNonStringer{S:"visible"}: the details`, + }, { + name: "unknown error type", + input: &Error{ + Type: "not real", + Field: "path.to.field", + BadValue: SelfMarshalerNonStringer{"visible"}, + Detail: "the details", + Origin: "theOrigin", + CoveredByDeclarative: true, + }, + expect: `path.to.field: Internal error: unhandled error code: : please report this: the details`, }} for _, tc := range cases {