diff --git a/staging/src/k8s.io/apimachinery/pkg/api/validate/limits_test.go b/staging/src/k8s.io/apimachinery/pkg/api/validate/limits_test.go index 7c369f1c7d4..44e866ad8db 100644 --- a/staging/src/k8s.io/apimachinery/pkg/api/validate/limits_test.go +++ b/staging/src/k8s.io/apimachinery/pkg/api/validate/limits_test.go @@ -316,9 +316,9 @@ func TestMaxBytes(t *testing.T) { field.TooLong(field.NewPath("fldpath"), "", 10).WithOrigin("maxBytes"), }, }, { - name: "mixture of characters, less bytes than max", - value: "©abc®®", - max: 10, + name: "mixture of characters, less bytes than max", + value: "©abc®®", + max: 10, wantErrs: nil, }, { name: "mixture of characters, more bytes than max", diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/limits.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/limits.go index b7fae021064..65d146310df 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/limits.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/limits.go @@ -30,12 +30,14 @@ const ( maxItemsTagName = "k8s:maxItems" minimumTagName = "k8s:minimum" maxLengthTagName = "k8s:maxLength" + maxBytesTagName = "k8s:maxBytes" ) func init() { RegisterTagValidator(maxItemsTagValidator{}) RegisterTagValidator(minimumTagValidator{}) RegisterTagValidator(maxLengthTagValidator{}) + RegisterTagValidator(maxBytesTagValidator{}) } type maxLengthTagValidator struct{} @@ -52,9 +54,7 @@ func (maxLengthTagValidator) ValidScopes() sets.Set[Scope] { return maxLengthTagValidScopes } -var ( - maxLengthValidator = types.Name{Package: libValidationPkg, Name: "MaxLength"} -) +var maxLengthValidator = types.Name{Package: libValidationPkg, Name: "MaxLength"} func (maxLengthTagValidator) GetValidations(context Context, tag codetags.Tag) (Validations, error) { var result Validations @@ -81,7 +81,7 @@ func (mltv maxLengthTagValidator) Docs() TagDoc { Tag: mltv.TagName(), StabilityLevel: TagStabilityLevelBeta, Scopes: sets.List(mltv.ValidScopes()), - Description: `Indicates that a string field has a limit on its length in characters. + Description: `Indicates that a string field has a limit on its length in characters. This could allow up to 4*N bytes if multi-byte characters are used. If you want to limit length of bytes specifically, use maxBytes.`, Payloads: []TagPayloadDoc{{ @@ -134,7 +134,7 @@ func (mltv maxBytesTagValidator) Docs() TagDoc { Tag: mltv.TagName(), StabilityLevel: TagStabilityLevelBeta, Scopes: sets.List(mltv.ValidScopes()), - Description: `Indicates that a string field has a limit on its length in bytes. + Description: `Indicates that a string field has a limit on its length in bytes. This could only allow as few as N/4 multi-byte characters. If you want to limit length of characters specifically, use maxLength.`, Payloads: []TagPayloadDoc{{ @@ -146,7 +146,6 @@ func (mltv maxBytesTagValidator) Docs() TagDoc { } } ->>>>>>> d860a611ab8 (fixup! validators limits gofmt) type maxItemsTagValidator struct{} func (maxItemsTagValidator) Init(_ Config) {} @@ -166,9 +165,7 @@ func (maxItemsTagValidator) ValidScopes() sets.Set[Scope] { return maxItemsTagValidScopes } -var ( - maxItemsValidator = types.Name{Package: libValidationPkg, Name: "MaxItems"} -) +var maxItemsValidator = types.Name{Package: libValidationPkg, Name: "MaxItems"} func (maxItemsTagValidator) GetValidations(context Context, tag codetags.Tag) (Validations, error) { var result Validations @@ -219,9 +216,7 @@ func (minimumTagValidator) ValidScopes() sets.Set[Scope] { return minimumTagValidScopes } -var ( - minimumValidator = types.Name{Package: libValidationPkg, Name: "Minimum"} -) +var minimumValidator = types.Name{Package: libValidationPkg, Name: "Minimum"} func (minimumTagValidator) GetValidations(context Context, tag codetags.Tag) (Validations, error) { var result Validations