Skip to content

Commit 875e3de

Browse files
authored
[FFM-5510]: Fixing the condition in evaluator to consider empty slice + expose Evaluate function (#104)
[FFM-5510]: Fixing the condition in evaluator to consider empty slice + Exposing Evaluate function # What: Small fix to consider empty slice in the condition for clause evaluation # Why: Previously segment.rules would either be nil pointer or pointer to slice with at least one element. Due to changes made for FFM-4150 we require extra check. # Testing: Locally
1 parent 46f89a7 commit 875e3de

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

evaluation/evaluator.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,8 @@ func (e Evaluator) isTargetIncludedOrExcludedInSegment(segmentList []string, tar
251251

252252
// Should Target be included via segment rules
253253
rules := segment.Rules
254-
if rules != nil && e.evaluateClauses(*rules, target) {
254+
// if rules is nil pointer or points to the empty slice
255+
if (rules != nil && len(*rules) > 0) && e.evaluateClauses(*rules, target) {
255256
e.logger.Debugf(
256257
"Target %s included in segment %s via rules", target.Name, segment.Name)
257258
return true
@@ -311,6 +312,12 @@ func (e Evaluator) checkPreRequisite(fc *rest.FeatureConfig, target *Target) (bo
311312
return true, nil
312313
}
313314

315+
// Evaluate exposes evaluate to the caller.
316+
func (e Evaluator) Evaluate(identifier string, target *Target, kind string) (rest.Variation, error) {
317+
318+
return e.evaluate(identifier, target, kind)
319+
}
320+
314321
func (e Evaluator) evaluate(identifier string, target *Target, kind string) (rest.Variation, error) {
315322

316323
if e.query == nil {
@@ -326,7 +333,7 @@ func (e Evaluator) evaluate(identifier string, target *Target, kind string) (res
326333
}
327334

328335
if flag.Prerequisites != nil {
329-
prereq, err := e.checkPreRequisite(&flag, target)
336+
prereq, err := e.checkPreRequisite(&flag, target) // equivalent of evaluateWithPreReqq
330337
if err != nil || !prereq {
331338
return findVariation(flag.Variations, flag.OffVariation)
332339
}

0 commit comments

Comments
 (0)