Skip to content

Commit

Permalink
Fix recording of version numbers
Browse files Browse the repository at this point in the history
Using "1.2" is considered a number by GA, so it removes trailing zeros ("3.10" becomes "3.1" despite being a string). This adds ".x" instead of just missing the version part.
  • Loading branch information
DanTup committed May 30, 2023
1 parent 43fb4a2 commit 3c38b6f
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 23 deletions.
12 changes: 11 additions & 1 deletion src/shared/utils/workspace.ts
Expand Up @@ -102,6 +102,10 @@ export function tryProcessBazelFlutterConfig(logger: Logger, config: WritableWor

// Cleans a version in the form x.y.z-foo.a.b.c into just
// x.y-foo to reduce the number of unique versions being recorded.
//
// To avoid trailing zeros being trimmed (eg. "3.10" being treated as the number
// 3.1), the version will actually be reported like "3.10.x" where x is literally "x"
// for all versions.
export function simplifyVersion(rawVersion: any): string | undefined {
if (typeof rawVersion !== "string")
return;
Expand All @@ -118,9 +122,15 @@ export function simplifyVersion(rawVersion: any): string | undefined {


const cleanParts: string[] = [];
cleanParts.push(versions[0]);
if (versions[0].length)
cleanParts.push(versions[0]);
else
cleanParts.push("0");
if (versions.length > 1)
cleanParts.push(`.${versions[1]}`);
else
cleanParts.push(`.x`);
cleanParts.push(`.x`); // 0.0.x
if (prereleaseTag)
cleanParts.push(`-${prereleaseTag}`);
else if (prereleasePart)
Expand Down
44 changes: 22 additions & 22 deletions src/test/dart/utils/workspace.test.ts
Expand Up @@ -3,43 +3,43 @@ import { simplifyVersion } from "../../../shared/utils/workspace";

describe("simplifyVersion", () => {
it("handles simple x.y.z versions", () => {
assert.equal(simplifyVersion("1.2.3"), "1.2");
assert.equal(simplifyVersion("0.0.3"), "0.0");
assert.equal(simplifyVersion("999.998.997"), "999.998");
assert.equal(simplifyVersion("1.2.3"), "1.2.x");
assert.equal(simplifyVersion("0.0.3"), "0.0.x");
assert.equal(simplifyVersion("999.998.997"), "999.998.x");
});

it("handles simple x.y versions", () => {
assert.equal(simplifyVersion("1.2"), "1.2");
assert.equal(simplifyVersion("0.0"), "0.0");
assert.equal(simplifyVersion("999.998"), "999.998");
assert.equal(simplifyVersion("1.2"), "1.2.x");
assert.equal(simplifyVersion("0.0"), "0.0.x");
assert.equal(simplifyVersion("999.998"), "999.998.x");
});

it("handles simple x.y.z with known pre-release kinds", () => {
for (const knownName of ["beta", "alpha", "dev", "edge"]) {
assert.equal(simplifyVersion(`3.1.0-63.1.${knownName}`), `3.1-${knownName}`);
assert.equal(simplifyVersion(`3.1.0-${knownName}.1.2`), `3.1-${knownName}`);
assert.equal(simplifyVersion(`3.1.0-1.${knownName}.2`), `3.1-${knownName}`);
assert.equal(simplifyVersion(`3.1.0-63.1.${knownName}`), `3.1.x-${knownName}`);
assert.equal(simplifyVersion(`3.1.0-${knownName}.1.2`), `3.1.x-${knownName}`);
assert.equal(simplifyVersion(`3.1.0-1.${knownName}.2`), `3.1.x-${knownName}`);
}
});

it("handles simple x.y with known pre-release kinds", () => {
for (const knownName of ["beta", "alpha", "dev", "edge"]) {
assert.equal(simplifyVersion(`3.0-63.1.${knownName}`), `3.0-${knownName}`);
assert.equal(simplifyVersion(`3.0-${knownName}.1.2`), `3.0-${knownName}`);
assert.equal(simplifyVersion(`3.0-1.${knownName}.2`), `3.0-${knownName}`);
assert.equal(simplifyVersion(`3.0-63.1.${knownName}`), `3.0.x-${knownName}`);
assert.equal(simplifyVersion(`3.0-${knownName}.1.2`), `3.0.x-${knownName}`);
assert.equal(simplifyVersion(`3.0-1.${knownName}.2`), `3.0.x-${knownName}`);
}
});

it("handles simple x.y.z with unknown pre-release kinds", () => {
assert.equal(simplifyVersion("3.1.0-63.1.apple"), "3.1-pre");
assert.equal(simplifyVersion("3.1.0-apple.pear.123"), "3.1-pre");
assert.equal(simplifyVersion("3.1.0-123.apple.123"), "3.1-pre");
assert.equal(simplifyVersion("3.1.0-63.1.apple"), "3.1.x-pre");
assert.equal(simplifyVersion("3.1.0-apple.pear.123"), "3.1.x-pre");
assert.equal(simplifyVersion("3.1.0-123.apple.123"), "3.1.x-pre");
});

it("handles simple x.y with unknown pre-release kinds", () => {
assert.equal(simplifyVersion("3.0-63.1.apple"), "3.0-pre");
assert.equal(simplifyVersion("3.0-apple.pear.123"), "3.0-pre");
assert.equal(simplifyVersion("3.0-123.apple.123"), "3.0-pre");
assert.equal(simplifyVersion("3.0-63.1.apple"), "3.0.x-pre");
assert.equal(simplifyVersion("3.0-apple.pear.123"), "3.0.x-pre");
assert.equal(simplifyVersion("3.0-123.apple.123"), "3.0.x-pre");
});

it("handles non-strings", () => {
Expand All @@ -51,9 +51,9 @@ describe("simplifyVersion", () => {
});

it("handles other non-standard input", () => {
assert.equal(simplifyVersion("1"), "1");
assert.equal(simplifyVersion("1-foo"), "1-pre");
assert.equal(simplifyVersion("TEST"), "TEST");
assert.equal(simplifyVersion(""), "");
assert.equal(simplifyVersion("1"), "1.x.x");
assert.equal(simplifyVersion("1-foo"), "1.x.x-pre");
assert.equal(simplifyVersion("TEST"), "TEST.x.x");
assert.equal(simplifyVersion(""), "0.x.x");
});
});

0 comments on commit 3c38b6f

Please sign in to comment.