diff --git a/public/app/core/utils/version.ts b/public/app/core/utils/version.ts index 1131e1d2ab8..746de761fa3 100644 --- a/public/app/core/utils/version.ts +++ b/public/app/core/utils/version.ts @@ -20,12 +20,25 @@ export class SemVersion { isGtOrEq(version: string): boolean { const compared = new SemVersion(version); - return !(this.major < compared.major || this.minor < compared.minor || this.patch < compared.patch); + + for (let i = 0; i < this.comparable.length; ++i) { + if (this.comparable[i] > compared.comparable[i]) { + return true; + } + if (this.comparable[i] < compared.comparable[i]) { + return false; + } + } + return true; } isValid(): boolean { return _.isNumber(this.major); } + + get comparable() { + return [this.major, this.minor, this.patch]; + } } export function isVersionGtOrEq(a: string, b: string): boolean { diff --git a/public/test/core/utils/version_test.ts b/public/test/core/utils/version.test.ts similarity index 96% rename from public/test/core/utils/version_test.ts rename to public/test/core/utils/version.test.ts index 91330389e24..47a31d99e69 100644 --- a/public/test/core/utils/version_test.ts +++ b/public/test/core/utils/version.test.ts @@ -44,6 +44,7 @@ describe('SemVersion', () => { { values: ['3.1.1-beta1', '3.1'], expected: true }, { values: ['3.4.5', '4'], expected: false }, { values: ['3.4.5', '3.5'], expected: false }, + { values: ['6.0.0', '5.2.0'], expected: true }, ]; cases.forEach(testCase => { expect(isVersionGtOrEq(testCase.values[0], testCase.values[1])).toBe(testCase.expected);