Skip to content

Commit 6c947c9

Browse files
committed
test: add prerelease version comparison edge case tests
The comparePrerelease function handles numeric vs string identifiers, length differences, and mixed types, but only one basic prerelease test existed. Add coverage for numeric comparison, string ordering, numeric-before-string precedence, length comparison, and equal prerelease identity. Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca>
1 parent d3fa454 commit 6c947c9

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

test/unit/binaryDiscovery.test.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,27 @@ test("comparePatchloomVersions handles major, minor, and patch differences", ()
147147
assert.equal(comparePatchloomVersions("1.2.3", "1.2.3"), 0);
148148
});
149149

150+
test("comparePatchloomVersions compares prerelease identifiers correctly", () => {
151+
// Two prereleases: numeric comparison
152+
assert.ok(comparePatchloomVersions("0.1.0-alpha.1", "0.1.0-alpha.2") < 0);
153+
assert.ok(comparePatchloomVersions("0.1.0-alpha.10", "0.1.0-alpha.2") > 0);
154+
155+
// Two prereleases: string comparison
156+
assert.ok(comparePatchloomVersions("0.1.0-alpha", "0.1.0-beta") < 0);
157+
158+
// Numeric identifier < string identifier
159+
assert.ok(comparePatchloomVersions("0.1.0-1", "0.1.0-alpha") < 0);
160+
161+
// Shorter prerelease < longer prerelease when prefix matches
162+
assert.ok(comparePatchloomVersions("0.1.0-alpha", "0.1.0-alpha.1") < 0);
163+
164+
// Both prereleases equal
165+
assert.equal(comparePatchloomVersions("0.1.0-beta.1", "0.1.0-beta.1"), 0);
166+
167+
// Release > prerelease
168+
assert.ok(comparePatchloomVersions("0.1.0", "0.1.0-rc.1") > 0);
169+
});
170+
150171
test("assessPatchloomCompatibility correctly identifies supported versions", () => {
151172
const supported = assessPatchloomCompatibility("patchloom 0.1.0");
152173
assert.equal(supported.compatibility, "supported");

0 commit comments

Comments
 (0)