@@ -69,14 +69,66 @@ func TestExtractMarkerIdAndExpressions(t *testing.T) {
69
69
"" : "\" foo\" " ,
70
70
},
71
71
},
72
+ {
73
+ name : "registered marker with expression with a comma in its value" ,
74
+ marker : `kubebuilder:validation:XValidation:rule='self.map(a, a == "someValue")',message='must have field!'` ,
75
+ expectedID : "kubebuilder:validation:XValidation" ,
76
+ expectedExpressions : map [string ]string {
77
+ "rule" : `'self.map(a, a == "someValue")'` ,
78
+ "message" : "'must have field!'" ,
79
+ },
80
+ },
81
+ {
82
+ name : "registered marker with expression with a comma in its value with double quotes" ,
83
+ marker : `kubebuilder:validation:XValidation:rule="self.map(a, a == \"someValue\")",message="must have field!"` ,
84
+ expectedID : "kubebuilder:validation:XValidation" ,
85
+ expectedExpressions : map [string ]string {
86
+ "rule" : `"self.map(a, a == \"someValue\")"` ,
87
+ "message" : `"must have field!"` ,
88
+ },
89
+ },
90
+ {
91
+ name : "registered marker with expression ending in a valid double quote" ,
92
+ marker : `kubebuilder:validation:Enum:=foo;bar;baz;""` ,
93
+ expectedID : "kubebuilder:validation:Enum" ,
94
+ expectedExpressions : map [string ]string {
95
+ "" : `foo;bar;baz;""` ,
96
+ },
97
+ },
98
+ {
99
+ name : "registered marker with chained expressions without quotes" ,
100
+ marker : `custom:marker:fruit=apple,color=blue,country=UK` ,
101
+ expectedID : "custom:marker" ,
102
+ expectedExpressions : map [string ]string {
103
+ "fruit" : "apple" ,
104
+ "color" : "blue" ,
105
+ "country" : "UK" ,
106
+ },
107
+ },
108
+ {
109
+ name : "registered marker with numeric value" ,
110
+ marker : `kubebuilder:validation:Minimum=10` ,
111
+ expectedID : "kubebuilder:validation:Minimum" ,
112
+ expectedExpressions : map [string ]string {
113
+ "" : "10" ,
114
+ },
115
+ },
116
+ {
117
+ name : "registered marker with negative numeric value" ,
118
+ marker : `kubebuilder:validation:Minimum=-10` ,
119
+ expectedID : "kubebuilder:validation:Minimum" ,
120
+ expectedExpressions : map [string ]string {
121
+ "" : "-10" ,
122
+ },
123
+ },
72
124
}
73
125
74
126
for _ , tc := range testcases {
75
127
t .Run (tc .name , func (t * testing.T ) {
76
128
g := NewWithT (t )
77
129
78
130
reg := NewRegistry ()
79
- reg .Register ("kubebuilder:object:root" , "required" , "kubebuilder:validation:XValidation" )
131
+ reg .Register (tc . expectedID )
80
132
81
133
id , expressions := extractMarkerIDAndExpressions (reg , tc .marker )
82
134
0 commit comments