Skip to content

Commit b753ba4

Browse files
committed
fix: equality comparison for semantic version comparison when number of segments = max allowed segments
1 parent 8358549 commit b753ba4

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

src/remote-config/condition-evaluator-internal.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,10 @@ function compareSemanticVersions(
302302
const version1 = String(actualValue).split('.').map(Number);
303303
const version2 = targetValue.split('.').map(Number);
304304

305+
if (version1.length > MAX_LENGTH || version2.length > MAX_LENGTH) {
306+
return false;
307+
}
308+
305309
for (let i = 0; i < MAX_LENGTH; i++) {
306310
// Check to see if segments are present. Note that these may be present and be NaN.
307311
const version1HasSegment = version1[i] !== undefined;
@@ -321,5 +325,5 @@ function compareSemanticVersions(
321325
if (version1[i] < version2[i]) return predicateFn(-1);
322326
if (version1[i] > version2[i]) return predicateFn(1);
323327
}
324-
return false;
328+
return predicateFn(0);
325329
}

test/unit/remote-config/condition-evaluator.spec.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1114,6 +1114,7 @@ describe('ConditionEvaluator', () => {
11141114
{ targets: ['5.12.3'], actual: '5.11.9', outcome: true },
11151115
{ targets: ['5.12.3'], actual: '5.12.3', outcome: true },
11161116
{ targets: ['5.12.3'], actual: '5.12.9', outcome: false },
1117+
{ targets: ['5.6.7.8.9'], actual: '5.6.7.8.9', outcome: true },
11171118
invalidNumericSignalTestCase,
11181119
];
11191120

@@ -1127,6 +1128,8 @@ describe('ConditionEvaluator', () => {
11271128
{ targets: ['5.0'], actual: 5.0, outcome: true },
11281129
{ targets: ['5.12.3'], actual: '5.12.9', outcome: false },
11291130
{ targets: ['5.12.3'], actual: '5.12.3.0.0.0.0', outcome: false },
1131+
{ targets: ['5.6.7.8.9'], actual: '5.6.7.8.9', outcome: true },
1132+
{ targets: ['5.6.7.8.9.0'], actual: '5.6.7.8.9.0', outcome: false },
11301133
invalidNumericSignalTestCase,
11311134
];
11321135

@@ -1166,6 +1169,7 @@ describe('ConditionEvaluator', () => {
11661169
{ targets: ['5'], actual: 5.0, outcome: true },
11671170
{ targets: ['5.0'], actual: 5.0, outcome: true },
11681171
{ targets: ['5.12.3'], actual: '5.11.9', outcome: false },
1172+
{ targets: ['5.6.7.8.9'], actual: '5.6.7.8.9', outcome: true },
11691173
invalidNumericSignalTestCase
11701174
];
11711175

0 commit comments

Comments
 (0)