Skip to content

Commit

Permalink
fix(gradle): Update version sorting algorithm (#11020)
Browse files Browse the repository at this point in the history
  • Loading branch information
zharinov committed Jul 31, 2021
1 parent 5055dbd commit 022a352
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 24 deletions.
38 changes: 20 additions & 18 deletions lib/versioning/gradle/compare.ts
Expand Up @@ -83,8 +83,11 @@ export enum QualifierRank {
Dev = -1,
Default = 0,
RC,
Release,
Snapshot,
Final,
GA,
Release,
SP,
}

export function qualifierRank(input: string): number {
Expand All @@ -95,35 +98,34 @@ export function qualifierRank(input: string): number {
if (val === 'rc' || val === 'cr') {
return QualifierRank.RC;
}
if (val === 'ga' || val === 'release' || val === 'latest' || val === 'sr') {
return QualifierRank.Release;
if (val === 'snapshot') {
return QualifierRank.Snapshot;
}
if (val === 'ga') {
return QualifierRank.GA;
}
if (val === 'final') {
return QualifierRank.Final;
}
if (val === 'release' || val === 'latest' || val === 'sr') {
return QualifierRank.Release;
}
if (val === 'sp') {
return QualifierRank.SP;
}
return QualifierRank.Default;
}

function stringTokenCmp(left: string, right: string): number {
const leftRank = qualifierRank(left);
const rightRank = qualifierRank(right);
if (leftRank === 0 && rightRank === 0) {
if (left === 'SNAPSHOT' || right === 'SNAPSHOT') {
if (left.toLowerCase() < right.toLowerCase()) {
return -1;
}

if (left.toLowerCase() > right.toLowerCase()) {
return 1;
}
} else {
if (left < right) {
return -1;
}
if (left < right) {
return -1;
}

if (left > right) {
return 1;
}
if (left > right) {
return 1;
}
} else {
if (leftRank < rightRank) {
Expand Down
19 changes: 13 additions & 6 deletions lib/versioning/gradle/index.spec.ts
Expand Up @@ -39,17 +39,20 @@ describe(getName(), () => {
expect(compare('1.0-dev', '1.0-alpha')).toEqual(-1);
expect(compare('1.0-alpha', '1.0-rc')).toEqual(-1);
expect(compare('1.0-zeta', '1.0-rc')).toEqual(-1);
expect(compare('1.0-rc', '1.0-final')).toEqual(-1);
expect(compare('1.0-final', '1.0-ga')).toEqual(-1);
expect(compare('1.0-ga', '1.0-release')).toEqual(-1);
expect(compare('1.0-rc', '1.0-release')).toEqual(-1);
expect(compare('1.0-release', '1.0-final')).toEqual(-1);
expect(compare('1.0-final', '1.0')).toEqual(-1);
expect(compare('1.0-alpha', '1.0-SNAPSHOT')).toEqual(-1);
expect(compare('1.0-SNAPSHOT', '1.0-zeta')).toEqual(-1);
expect(compare('1.0-zeta', '1.0-SNAPSHOT')).toEqual(-1);
expect(compare('1.0-zeta', '1.0-rc')).toEqual(-1);
expect(compare('1.0-rc', '1.0')).toEqual(-1);
expect(compare('1.0', '1.0-20150201.121010-123')).toEqual(-1);
expect(compare('1.0-20150201.121010-123', '1.1')).toEqual(-1);
expect(compare('sNaPsHoT', 'snapshot')).toEqual(-1);
expect(compare('Hoxton.RELEASE', 'Hoxton.SR1')).toEqual(-1);
expect(compare('1.0-release', '1.0-sp-1')).toEqual(-1);
expect(compare('1.0-sp-1', '1.0-sp-2')).toEqual(-1);
});
it('returns greater than', () => {
expect(compare('1.2', '1.1')).toEqual(1);
Expand All @@ -63,16 +66,20 @@ describe(getName(), () => {
expect(compare('1.0-rc', '1.0-alpha')).toEqual(1);
expect(compare('1.0-rc', '1.0-zeta')).toEqual(1);
expect(compare('1.0-release', '1.0-rc')).toEqual(1);
expect(compare('1.0-final', '1.0-release')).toEqual(1);
expect(compare('1.0-final', '1.0-rc')).toEqual(1);
expect(compare('1.0-ga', '1.0-final')).toEqual(1);
expect(compare('1.0-release', '1.0-ga')).toEqual(1);
expect(compare('1.0-release', '1.0-final')).toEqual(1);
expect(compare('1.0', '1.0-final')).toEqual(1);
expect(compare('1.0-SNAPSHOT', '1.0-alpha')).toEqual(1);
expect(compare('1.0-zeta', '1.0-SNAPSHOT')).toEqual(1);
expect(compare('1.0-SNAPSHOT', '1.0-zeta')).toEqual(1);
expect(compare('1.0-rc', '1.0-zeta')).toEqual(1);
expect(compare('1.0', '1.0-rc')).toEqual(1);
expect(compare('1.0-20150201.121010-123', '1.0')).toEqual(1);
expect(compare('1.1', '1.0-20150201.121010-123')).toEqual(1);
expect(compare('snapshot', 'sNaPsHoT')).toEqual(1);
expect(compare('Hoxton.SR1', 'Hoxton.RELEASE')).toEqual(1);
expect(compare('1.0-sp-1', '1.0-release')).toEqual(1);
expect(compare('1.0-sp-2', '1.0-sp-1')).toEqual(1);
});

const invalidPrefixRanges = [
Expand Down

0 comments on commit 022a352

Please sign in to comment.