Skip to content

fix: reject non-semver candidate versions in isVersionSatisfies#1009

Open
sproctor wants to merge 1 commit into
actions:mainfrom
sproctor:main
Open

fix: reject non-semver candidate versions in isVersionSatisfies#1009
sproctor wants to merge 1 commit into
actions:mainfrom
sproctor:main

Conversation

@sproctor

Copy link
Copy Markdown

Distributions like JetBrains Runtime publish 4-segment versions such as '17.0.8.1+1080.1' that the semver package rejects. Both compareBuild and satisfies throw on these, which surfaced to users as "Error: Invalid Version: 17.0.8.1+1080.1" and aborted the whole install when any available version was non-semver. Guard with an early semver.valid check so unparseable versions are treated as a non-match.

Description:
rejects invalid semver java versions rather than throwing an error. Allow valid java versions in a list with invalid versions to be used (specifically the JBR version mentioned above)

Related issue:
#1008

Check list:

  • Mark if documentation changes are required.
  • Mark if tests were added or updated to cover the changes.

Distributions like JetBrains Runtime publish 4-segment versions such as
'17.0.8.1+1080.1' that the semver package rejects. Both compareBuild and
satisfies throw on these, which surfaced to users as "Error: Invalid
Version: 17.0.8.1+1080.1" and aborted the whole install when any
available version was non-semver. Guard with an early semver.valid check
so unparseable versions are treated as a non-match.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@sproctor sproctor requested a review from a team as a code owner May 26, 2026 23:43

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR prevents isVersionSatisfies from throwing when a distribution returns a candidate Java version string that is not valid SemVer (e.g., JetBrains Runtime 4-segment versions like 17.0.8.1+1080.1). Instead, invalid candidate versions are treated as “not a match”, allowing the installer to continue and select other valid versions.

Changes:

  • Added an early semver.valid(version) guard in isVersionSatisfies to return false for unparseable candidate versions (avoids compareBuild / satisfies exceptions).
  • Updated compiled dist bundles to include the same guard.
  • Added Jest coverage to ensure invalid candidate versions are rejected (and don’t abort selection).

Reviewed changes

Copilot reviewed 2 out of 4 changed files in this pull request and generated no comments.

File Description
src/util.ts Adds early SemVer validity check for candidate versions to avoid throwing during version filtering.
dist/setup/index.js Updates compiled action bundle with the same defensive guard.
dist/cleanup/index.js Updates compiled cleanup bundle with the same defensive guard.
__tests__/util.test.ts Adds tests covering invalid (4-segment) candidate versions to ensure they’re treated as non-matches.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants