@@ -69,14 +69,66 @@ func TestExtractMarkerIdAndExpressions(t *testing.T) {
6969 "" : "\" foo\" " ,
7070 },
7171 },
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+ },
72124 }
73125
74126 for _ , tc := range testcases {
75127 t .Run (tc .name , func (t * testing.T ) {
76128 g := NewWithT (t )
77129
78130 reg := NewRegistry ()
79- reg .Register ("kubebuilder:object:root" , "required" , "kubebuilder:validation:XValidation" )
131+ reg .Register (tc . expectedID )
80132
81133 id , expressions := extractMarkerIDAndExpressions (reg , tc .marker )
82134
0 commit comments