Unexpected semver comparison behavior #15280
This commit is contained in:
Torkel Ödegaard 2019-02-07 14:17:48 +01:00 committed by GitHub
commit 8f0e9b674d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 1 deletions

View File

@ -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 {

View File

@ -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);