check for pre-release identifier in semverCompare
parent
aa1bde57bd
commit
366e7878ea
|
@ -1,7 +1,7 @@
|
|||
import { semverCompare, SemverResult, minFwVersionCheck } from "../version";
|
||||
|
||||
describe("semver compare", () => {
|
||||
it("knows when RIGHT_IS_GREATER", () => {
|
||||
it("knows when RIGHT_IS_GREATER: numeric", () => {
|
||||
expect(semverCompare("3.1.6", "4.0.0"))
|
||||
.toBe(SemverResult.RIGHT_IS_GREATER);
|
||||
|
||||
|
@ -13,12 +13,25 @@ describe("semver compare", () => {
|
|||
|
||||
expect(semverCompare("1.1.9", "2.0.2"))
|
||||
.toBe(SemverResult.RIGHT_IS_GREATER);
|
||||
});
|
||||
|
||||
it("knows when RIGHT_IS_GREATER: undefined", () => {
|
||||
expect(semverCompare("", "1.0.0"))
|
||||
.toBe(SemverResult.RIGHT_IS_GREATER);
|
||||
|
||||
expect(semverCompare("x.y.z", "1.0.0"))
|
||||
.toBe(SemverResult.RIGHT_IS_GREATER);
|
||||
});
|
||||
|
||||
it("knows when LEFT_IS_GREATER", () => {
|
||||
it("knows when RIGHT_IS_GREATER: pre-release identifiers", () => {
|
||||
expect(semverCompare("6.1.0", "6.1.1-beta"))
|
||||
.toBe(SemverResult.RIGHT_IS_GREATER);
|
||||
|
||||
expect(semverCompare("1.1.1-beta", "1.1.1"))
|
||||
.toBe(SemverResult.RIGHT_IS_GREATER);
|
||||
});
|
||||
|
||||
it("knows when LEFT_IS_GREATER: numeric", () => {
|
||||
expect(semverCompare("4.0.0", "3.1.6"))
|
||||
.toBe(SemverResult.LEFT_IS_GREATER);
|
||||
|
||||
|
@ -30,13 +43,33 @@ describe("semver compare", () => {
|
|||
|
||||
expect(semverCompare("2.0.2", "1.1.9"))
|
||||
.toBe(SemverResult.LEFT_IS_GREATER);
|
||||
});
|
||||
|
||||
it("knows when LEFT_IS_GREATER: undefined", () => {
|
||||
expect(semverCompare("1.0.0", ""))
|
||||
.toBe(SemverResult.LEFT_IS_GREATER);
|
||||
|
||||
expect(semverCompare("1.0.0", "x.y.z"))
|
||||
.toBe(SemverResult.LEFT_IS_GREATER);
|
||||
expect(semverCompare("x.y.z", "1.0.0"))
|
||||
.toBe(SemverResult.RIGHT_IS_GREATER);
|
||||
});
|
||||
|
||||
it("knows when LEFT_IS_GREATER: pre-release identifiers", () => {
|
||||
expect(semverCompare("6.1.1-beta", "6.1.0"))
|
||||
.toBe(SemverResult.LEFT_IS_GREATER);
|
||||
|
||||
expect(semverCompare("1.1.1", "1.1.1-beta"))
|
||||
.toBe(SemverResult.LEFT_IS_GREATER);
|
||||
});
|
||||
|
||||
it("knows when EQUAL", () => {
|
||||
expect(semverCompare("1.1.1", "1.1.1"))
|
||||
.toBe(SemverResult.EQUAL);
|
||||
|
||||
expect(semverCompare("", ""))
|
||||
.toBe(SemverResult.EQUAL);
|
||||
|
||||
expect(semverCompare("1.1.1-beta", "1.1.1-beta"))
|
||||
.toBe(SemverResult.EQUAL);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -7,8 +7,12 @@ export enum SemverResult {
|
|||
}
|
||||
// CREDIT: https://github.com/substack/semver-compare
|
||||
export function semverCompare(left: string, right: string): SemverResult {
|
||||
const pa: Array<string | undefined> = left.split(".");
|
||||
const pb: Array<string | undefined> = right.split(".");
|
||||
const leftSemVer = left.split("-")[0];
|
||||
const rightSemVer = right.split("-")[0];
|
||||
const leftHasSuffix = left.includes("-");
|
||||
const rightHasSuffix = right.includes("-");
|
||||
const pa: Array<string | undefined> = leftSemVer.split(".");
|
||||
const pb: Array<string | undefined> = rightSemVer.split(".");
|
||||
for (let i = 0; i < 3; i++) {
|
||||
const num_left = Number(pa[i]);
|
||||
const num_right = Number(pb[i]);
|
||||
|
@ -31,6 +35,15 @@ export function semverCompare(left: string, right: string): SemverResult {
|
|||
|
||||
}
|
||||
|
||||
// num_left === num_right. Check presence of pre-release identifiers.
|
||||
if (!leftHasSuffix && rightHasSuffix) {
|
||||
return SemverResult.LEFT_IS_GREATER;
|
||||
}
|
||||
|
||||
if (leftHasSuffix && !rightHasSuffix) {
|
||||
return SemverResult.RIGHT_IS_GREATER;
|
||||
}
|
||||
|
||||
return SemverResult.EQUAL;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue