Skip to content

Commit 87933cc

Browse files
Introduce version to comparison number (#21913)
To do the work for [AB#8548](https://dev.azure.com/fluidframework/235294da-091d-4c29-84fc-cdfc3d90890b/_workitems/edit/8548) I've introduced this comparison algorithm. This very simply and dumbly solves the problem of version comparison.
1 parent 3f00c6d commit 87933cc

File tree

2 files changed

+58
-1
lines changed

2 files changed

+58
-1
lines changed

packages/test/test-version-utils/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,4 @@ export {
6565
SkippedTestWithDriverType,
6666
SkippedErrorExpectingTestWithDriverType,
6767
} from "./itSkipsOnFailure.js";
68-
export { getRequestedVersion } from "./versionUtils.js";
68+
export { getRequestedVersion, versionToComparisonNumber } from "./versionUtils.js";

packages/test/test-version-utils/src/versionUtils.ts

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,3 +589,60 @@ export function versionHasMovedSparsedMatrix(version: string): boolean {
589589
version >= "2.0.0-internal.2.0.0" || (!version.includes("internal") && version >= "2.0.0")
590590
);
591591
}
592+
593+
/**
594+
* @internal
595+
*/
596+
export function versionToComparisonNumber(version: string): number {
597+
if (version.startsWith("0.")) {
598+
return 0;
599+
}
600+
if (version.startsWith("1.")) {
601+
return 1;
602+
}
603+
if (version.startsWith("2.0.0-internal.1")) {
604+
return 2;
605+
}
606+
if (version.startsWith("2.0.0-internal.2")) {
607+
return 3;
608+
}
609+
if (version.startsWith("2.0.0-internal.3")) {
610+
return 4;
611+
}
612+
if (version.startsWith("2.0.0-internal.4")) {
613+
return 5;
614+
}
615+
if (version.startsWith("2.0.0-internal.5")) {
616+
return 6;
617+
}
618+
if (version.startsWith("2.0.0-internal.6")) {
619+
return 7;
620+
}
621+
if (version.startsWith("2.0.0-internal.7")) {
622+
return 8;
623+
}
624+
if (version.startsWith("2.0.0-internal.8")) {
625+
return 9;
626+
}
627+
if (version.startsWith("2.0.0-rc.1")) {
628+
return 10;
629+
}
630+
if (version.startsWith("2.0.0-rc.2")) {
631+
return 11;
632+
}
633+
if (version.startsWith("2.0.0-rc.3")) {
634+
return 12;
635+
}
636+
if (version.startsWith("2.0.0-rc.4")) {
637+
return 13;
638+
}
639+
if (version.startsWith("2.0.0-rc.5")) {
640+
return 14;
641+
}
642+
643+
const parsed = semver.parse(version);
644+
if (!parsed) {
645+
throw new Error(`Invalid version: ${version}`);
646+
}
647+
return parsed.major * 1_000_000 + parsed.minor * 1000 + parsed.patch + 15;
648+
}

0 commit comments

Comments
 (0)