diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/unique/doc.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/unique/doc.go index ee5ba38a0e9..c6b95fcd9b9 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/unique/doc.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/unique/doc.go @@ -49,6 +49,17 @@ type Struct struct { // +k8s:unique=map // +k8s:listMapKey=key AtomicListUniqueMap []Item `json:"atomicListUniqueMap"` + + // customUnique with listType=set + // +k8s:listType=set + // +k8s:customUnique + CustomUniqueListWithTypeSet []string `json:"customUniqueListWithTypeSet"` + + // customUnique with listType=map + // +k8s:listType=map + // +k8s:listMapKey=key + // +k8s:customUnique + CustomUniqueListWithTypeMap []Item `json:"customUniqueListWithTypeMap"` } type Item struct { diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/unique/doc_test.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/unique/doc_test.go index adfd6f33425..3d8c32e9921 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/unique/doc_test.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/unique/doc_test.go @@ -43,6 +43,8 @@ func TestUnique(t *testing.T) { {Key: "key1", Data: "one"}, {Key: "key2", Data: "two"}, }, + CustomUniqueListWithTypeSet: []string{"a", "b", "a"}, + CustomUniqueListWithTypeMap: []Item{{Key: "a"}, {Key: "b"}, {Key: "a"}}, }).ExpectValid() // Test empty lists @@ -51,6 +53,8 @@ func TestUnique(t *testing.T) { SliceMapFieldWithMultipleKeys: []ItemWithMultipleKeys{}, AtomicListUniqueSet: []Item{}, AtomicListUniqueMap: []Item{}, + CustomUniqueListWithTypeSet: []string{}, + CustomUniqueListWithTypeMap: []Item{}, }).ExpectValid() // Test single element lists @@ -59,6 +63,8 @@ func TestUnique(t *testing.T) { SliceMapFieldWithMultipleKeys: []ItemWithMultipleKeys{{Key1: "a", Key2: "b", Data: "one"}}, AtomicListUniqueSet: []Item{{Key: "single", Data: "one"}}, AtomicListUniqueMap: []Item{{Key: "single", Data: "one"}}, + CustomUniqueListWithTypeSet: []string{"single"}, + CustomUniqueListWithTypeMap: []Item{{Key: "single"}}, }).ExpectValid() // Test duplicate values (should fail validation) @@ -79,6 +85,8 @@ func TestUnique(t *testing.T) { {Key: "key2", Data: "two"}, {Key: "key1", Data: "three"}, }, + CustomUniqueListWithTypeSet: []string{"a", "b", "a"}, + CustomUniqueListWithTypeMap: []Item{{Key: "a"}, {Key: "b"}, {Key: "a"}}, }).ExpectMatches(field.ErrorMatcher{}.ByType().ByField(), field.ErrorList{ field.Duplicate(field.NewPath("primitiveListUniqueSet").Index(3), nil), field.Duplicate(field.NewPath("primitiveListUniqueSet").Index(4), nil), @@ -96,6 +104,8 @@ func TestUnique(t *testing.T) { {Key: "a", Data: "two"}, {Key: "", Data: "three"}, }, + CustomUniqueListWithTypeSet: []string{"", "a", ""}, + CustomUniqueListWithTypeMap: []Item{{Key: ""}, {Key: "a"}, {Key: ""}}, }).ExpectMatches(field.ErrorMatcher{}.ByType().ByField(), field.ErrorList{ field.Duplicate(field.NewPath("primitiveListUniqueSet").Index(2), nil), field.Duplicate(field.NewPath("atomicListUniqueMap").Index(2), nil), @@ -119,6 +129,8 @@ func TestRatcheting(t *testing.T) { {Key: "key1", Data: "one"}, {Key: "key2", Data: "two"}, }, + CustomUniqueListWithTypeSet: []string{"a", "b", "a"}, + CustomUniqueListWithTypeMap: []Item{{Key: "a"}, {Key: "b"}, {Key: "a"}}, } // Same data, different order. @@ -136,6 +148,8 @@ func TestRatcheting(t *testing.T) { {Key: "key2", Data: "two"}, {Key: "key1", Data: "one"}, }, + CustomUniqueListWithTypeSet: []string{"a", "a", "b"}, + CustomUniqueListWithTypeMap: []Item{{Key: "a"}, {Key: "a"}, {Key: "b"}}, } // Test that reordering doesn't trigger validation errors diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/unique/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/unique/zz_generated.validations.go index 0adaccffe45..a8b7754b49b 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/unique/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/unique/zz_generated.validations.go @@ -106,5 +106,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return }(fldPath.Child("atomicListUniqueMap"), obj.AtomicListUniqueMap, safe.Field(oldObj, func(oldObj *Struct) []Item { return oldObj.AtomicListUniqueMap }))...) + // field Struct.CustomUniqueListWithTypeSet has no validation + // field Struct.CustomUniqueListWithTypeMap has no validation return errs }