From 48e14b92170730e8fca94019be65aa5648f113dc Mon Sep 17 00:00:00 2001 From: wadii Date: Thu, 7 May 2026 10:15:04 +0200 Subject: [PATCH] fix: respect rule type for sub-rules in segment evaluation Sub-rules were always evaluated with ALL logic, ignoring the parent rule's type field (ANY/ALL/NONE). Now uses evaluateRuleConditions for sub-rules, matching the existing conditions behavior. Bumps engine-test-data from v3.5.0 to v3.7.0 which includes test cases for this fix. Equivalent fix to flagsmith-engine#313. Co-Authored-By: Claude Opus 4.7 (1M context) --- .gitmodules | 2 +- flagsmith-engine/segments/evaluators.ts | 4 +++- tests/engine/engine-tests/engine-test-data | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index 5c24c5b..e48e529 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "tests/engine/engine-tests/engine-test-data"] path = tests/engine/engine-tests/engine-test-data url = git@github.com:Flagsmith/engine-test-data.git - branch = v3.5.0 + branch = v3.7.0 diff --git a/flagsmith-engine/segments/evaluators.ts b/flagsmith-engine/segments/evaluators.ts index e3bc5ee..82551e8 100644 --- a/flagsmith-engine/segments/evaluators.ts +++ b/flagsmith-engine/segments/evaluators.ts @@ -119,9 +119,11 @@ function evaluateSubRules( ): boolean { if (!rule.rules || rule.rules.length === 0) return true; - return rule.rules.every((subRule: SegmentRule) => + const subRuleResults = rule.rules.map((subRule: SegmentRule) => traitsMatchSegmentRule(subRule, segmentKey, context) ); + + return evaluateRuleConditions(rule.type, subRuleResults); } function evaluateRuleConditions(ruleType: string, conditionResults: boolean[]): boolean { diff --git a/tests/engine/engine-tests/engine-test-data b/tests/engine/engine-tests/engine-test-data index 7840a13..4b29dc7 160000 --- a/tests/engine/engine-tests/engine-test-data +++ b/tests/engine/engine-tests/engine-test-data @@ -1 +1 @@ -Subproject commit 7840a1349b601df3b6b4a089f40864f659801afb +Subproject commit 4b29dc772a764364af2dd504ecefbdf74cf5473f