From eb879062f992b38779380c4f12e974271d196b19 Mon Sep 17 00:00:00 2001 From: corpglory-dev Date: Wed, 6 Feb 2019 18:32:22 +0300 Subject: [PATCH 1/3] Rename version_test to version.test --- public/test/core/utils/{version_test.ts => version.test.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename public/test/core/utils/{version_test.ts => version.test.ts} (100%) diff --git a/public/test/core/utils/version_test.ts b/public/test/core/utils/version.test.ts similarity index 100% rename from public/test/core/utils/version_test.ts rename to public/test/core/utils/version.test.ts From 43b5eba8ee1196c94067c0804602ffb2695a0427 Mon Sep 17 00:00:00 2001 From: corpglory-dev Date: Wed, 6 Feb 2019 18:33:24 +0300 Subject: [PATCH 2/3] Add failing test --- public/test/core/utils/version.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/public/test/core/utils/version.test.ts b/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); From ee132c1091dc2fc29caaf5e38a3886da6fc82283 Mon Sep 17 00:00:00 2001 From: corpglory-dev Date: Wed, 6 Feb 2019 19:59:28 +0300 Subject: [PATCH 3/3] Fix SemVersion.isGtOrEq --- public/app/core/utils/version.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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 {