Commit 8f0e9b67 by Torkel Ödegaard Committed by GitHub

Merge pull request #15282 from CorpGlory/unexpected-semver-comparison-behavior-#15280

Unexpected semver comparison behavior #15280
parents 00a676ff ee132c10
...@@ -20,12 +20,25 @@ export class SemVersion { ...@@ -20,12 +20,25 @@ export class SemVersion {
isGtOrEq(version: string): boolean { isGtOrEq(version: string): boolean {
const compared = new SemVersion(version); 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 { isValid(): boolean {
return _.isNumber(this.major); return _.isNumber(this.major);
} }
get comparable() {
return [this.major, this.minor, this.patch];
}
} }
export function isVersionGtOrEq(a: string, b: string): boolean { export function isVersionGtOrEq(a: string, b: string): boolean {
......
...@@ -44,6 +44,7 @@ describe('SemVersion', () => { ...@@ -44,6 +44,7 @@ describe('SemVersion', () => {
{ values: ['3.1.1-beta1', '3.1'], expected: true }, { values: ['3.1.1-beta1', '3.1'], expected: true },
{ values: ['3.4.5', '4'], expected: false }, { values: ['3.4.5', '4'], expected: false },
{ values: ['3.4.5', '3.5'], expected: false }, { values: ['3.4.5', '3.5'], expected: false },
{ values: ['6.0.0', '5.2.0'], expected: true },
]; ];
cases.forEach(testCase => { cases.forEach(testCase => {
expect(isVersionGtOrEq(testCase.values[0], testCase.values[1])).toBe(testCase.expected); expect(isVersionGtOrEq(testCase.values[0], testCase.values[1])).toBe(testCase.expected);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment