diff --git a/src/common/config/version.ts b/src/common/config/version.ts index affdf9d94d..640a9eec45 100644 --- a/src/common/config/version.ts +++ b/src/common/config/version.ts @@ -5,11 +5,15 @@ export const atLeastVersion = ( patch?: number ): boolean => { const [haMajor, haMinor, haPatch] = version.split(".", 3); + return ( Number(haMajor) > major || - (Number(haMajor) === major && Number(haMinor) >= minor) || + (Number(haMajor) === major && (patch === undefined + ? Number(haMinor) >= minor + : Number(haMinor) > minor)) || (patch !== undefined && - Number(haMajor) === major && Number(haMinor) === minor && + Number(haMajor) === major && + Number(haMinor) === minor && Number(haPatch) >= patch) ); }; diff --git a/test-mocha/common/config/version.ts b/test-mocha/common/config/version.ts new file mode 100644 index 0000000000..3fe6ef7af6 --- /dev/null +++ b/test-mocha/common/config/version.ts @@ -0,0 +1,41 @@ +import { assert } from "chai"; +import { atLeastVersion } from "../../../src/common/config/version"; + +const testTruthyData = [ + { version: "2021.1.1", major: 2021, minor: 1, patch: 1 }, + { version: "2021.1.1", major: 2021, minor: 1 }, + { version: "2021.1.1", major: 2020, minor: 12, patch: 1 }, + { version: "2021.1.1", major: 2020, minor: 12 }, + { version: "2021.1.1", major: 2021, minor: 2, patch: 0 }, + { version: "2021.1.1", major: 2021, minor: 2 }, + + { version: "2021.2.4", major: 0, minor: 113, patch: 0 }, + { version: "2021.2.4", major: 0, minor: 113 }, + + { version: "0.114.0", major: 0, minor: 113, patch: 0 }, + { version: "0.114.0", major: 0, minor: 113 }, + + { version: "2021.2.0dev.2323", major: 2021, minor: 2, patch: 0 }, + { version: "2021.2.0dev.2323", major: 2021, minor: 2 }, +]; + +const testFalsyData = [ + { version: "0.114.0", major: 0, minor: 113 }, + { version: "2021.2.0dev.2323", major: 2021, minor: 2, patch: 0 }, +]; + +describe("atLeastVersion - Truthy", () => { + testTruthyData.forEach((test) => + it(`'${test.version}' >= ${test.major},${test.minor},${test.patch}`, () => { + assert.isTrue(atLeastVersion("2021.1.1", 2021, 1)); + }) + ); +}); + +describe("atLeastVersion - Falsy", () => { + testFalsyData.forEach((test) => + it(`'${test.version}' >= ${test.major},${test.minor},${test.patch}`, () => { + assert.isTrue(atLeastVersion("2021.1.1", 2021, 1)); + }) + ); +});