Refactor error handling and improve test logging for installers#989
Conversation
There was a problem hiding this comment.
Pull request overview
This PR standardizes “version not found” error handling across Java distribution installers by introducing a shared helper on JavaBase, and updates installer/caching tests to use the new message format while reducing noisy core.error output during test runs.
Changes:
- Added
JavaBase.createVersionNotFoundError(...)to generate consistent, context-rich error messages (with optional available-versions truncation). - Refactored multiple distribution installers to throw the standardized error instead of bespoke strings.
- Updated Jest suites to align assertions with the new messages and to consistently mock
core.errorto suppress test log noise.
Reviewed changes
Copilot reviewed 33 out of 34 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/distributions/base-installer.ts | Adds createVersionNotFoundError helper for standardized errors. |
| src/distributions/adopt/installer.ts | Uses the new helper when no satisfied version is found. |
| src/distributions/corretto/installer.ts | Uses the new helper when no satisfied version is found. |
| src/distributions/dragonwell/installer.ts | Uses the new helper when no satisfied version is found. |
| src/distributions/graalvm/installer.ts | Switches to the helper for some “not found” paths and appends a GraalVM URL hint on 404. |
| src/distributions/jetbrains/installer.ts | Uses the new helper when no satisfied version is found. |
| src/distributions/liberica/installer.ts | Uses the new helper when no satisfied version is found. |
| src/distributions/microsoft/installer.ts | Uses the new helper when no satisfied version is found (includes manifest versions). |
| src/distributions/oracle/installer.ts | Uses the new helper when no satisfied version is found. |
| src/distributions/sapmachine/installer.ts | Uses the new helper when no satisfied version is found. |
| src/distributions/semeru/installer.ts | Uses the new helper and adds platform context to the error. |
| src/distributions/temurin/installer.ts | Uses the new helper when no satisfied version is found. |
| src/distributions/zulu/installer.ts | Uses the new helper when no satisfied version is found. |
| dist/setup/index.js | Updates the compiled distribution bundle to reflect source changes. |
| tests/distributors/adopt-installer.test.ts | Mocks core.error to suppress logs during tests. |
| tests/distributors/base-installer.test.ts | Updates version-not-found expectations and adds unit tests for the helper. |
| tests/distributors/corretto-installer.test.ts | Mocks core.error to suppress logs during tests. |
| tests/distributors/dragonwell-installer.test.ts | Updates error expectations and mocks core.error. |
| tests/distributors/graalvm-installer.test.ts | Updates error expectations and removes assertions tied to old core.error logging behavior. |
| tests/distributors/jetbrains-installer.test.ts | Mocks core.error to suppress logs during tests. |
| tests/distributors/liberica-installer.test.ts | Updates error expectations and mocks core.error. |
| tests/distributors/liberica-linux-installer.test.ts | Updates error expectations and mocks core.error. |
| tests/distributors/liberica-windows-installer.test.ts | Updates error expectations and mocks core.error. |
| tests/distributors/local-installer.test.ts | Mocks core.error to suppress logs during tests. |
| tests/distributors/microsoft-installer.test.ts | Mocks core.error to suppress logs during tests. |
| tests/distributors/oracle-installer.test.ts | Mocks core.error to suppress logs during tests. |
| tests/distributors/sapmachine-installer.test.ts | Updates error expectations and mocks core.error. |
| tests/distributors/semeru-installer.test.ts | Mocks core.error to suppress logs during tests. |
| tests/distributors/temurin-installer.test.ts | Mocks core.error to suppress logs during tests. |
| tests/distributors/zulu-installer.test.ts | Updates error expectations and mocks core.error. |
| tests/distributors/zulu-linux-installer.test.ts | Updates error expectations and mocks core.error. |
| tests/distributors/zulu-windows-installer.test.ts | Updates error expectations and mocks core.error. |
| tests/cache.test.ts | Mocks core.error and strengthens cleanup of Jest mocks between tests. |
| tests/cleanup-java.test.ts | Mocks core.error and strengthens cleanup of Jest mocks between tests. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
jsoref
left a comment
There was a problem hiding this comment.
I'll try to test this to give additional feedback, but based on the tests, this is my first pass.
Beforehttps://github.com/check-spelling-sandbox/setup-java/actions/runs/23344583858 Annotations9 errors Afterhttps://github.com/check-spelling-sandbox/setup-java/actions/runs/23345876163 Annotations3 errors For the rest of it, I'm looking for something like: This is roughly the first 3 lines from each audit report (the package, the severity, and the first line of description). You could be fancy and use |
jsoref
left a comment
There was a problem hiding this comment.
From my perspective, these errors look much better.
(They still don't address many of my complaints, but they're a significant improvement.)
I'm not a code owner, and they only partially address my original complaints, but if I were a code owner, I'd merge them and then encourage someone to work on the other items I identified.
…with updated download URL
…os with clearer messages
Bumps the github-actions group with 4 updates: [actions/setup-java](https://github.com/actions/setup-java), [graalvm/setup-graalvm](https://github.com/graalvm/setup-graalvm), [anthropics/claude-code-action](https://github.com/anthropics/claude-code-action) and [ruby/setup-ruby](https://github.com/ruby/setup-ruby). Updates `actions/setup-java` from 5.2.0 to 5.3.0 Release notes *Sourced from [actions/setup-java's releases](https://github.com/actions/setup-java/releases).* > v5.3.0 > ------ > > What's Changed > -------------- > > * chore: update Java version to 25 in setup examples by [`@alaahong`](https://github.com/alaahong) in [actions/setup-java#969](https://redirect.github.com/actions/setup-java/pull/969) > * Bump minimatch from 3.1.2 to 3.1.5 by [`@dependabot`](https://github.com/dependabot)[bot] in [actions/setup-java#984](https://redirect.github.com/actions/setup-java/pull/984) > * Refactor error handling and improve test logging for installers by [`@chiranjib-swain`](https://github.com/chiranjib-swain) in [actions/setup-java#989](https://redirect.github.com/actions/setup-java/pull/989) > * chore: upgrade dependencies (`@actions/core`, cache, glob, http-client, tool-cache, xmlbuilder2) by [`@Copilot`](https://github.com/Copilot) in [actions/setup-java#999](https://redirect.github.com/actions/setup-java/pull/999) > * Add Oracle JDK 17 licensing limitation note by [`@mahabaleshwars`](https://github.com/mahabaleshwars) in [actions/setup-java#1001](https://redirect.github.com/actions/setup-java/pull/1001) > * Update readme for ubuntu sudo java\_home behavior by [`@mahabaleshwars`](https://github.com/mahabaleshwars) in [actions/setup-java#1013](https://redirect.github.com/actions/setup-java/pull/1013) > * temurin: add support for Alpine Linux by [`@gdams`](https://github.com/gdams) in [actions/setup-java#674](https://redirect.github.com/actions/setup-java/pull/674) > * fix: resolve npm audit vulnerabilities in fast-xml-builder and fast-xml-parser by [`@gdams`](https://github.com/gdams) in [actions/setup-java#1015](https://redirect.github.com/actions/setup-java/pull/1015) > * Bump `@typescript-eslint/eslint-plugin` from 8.35.1 to 8.48.0 by [`@dependabot`](https://github.com/dependabot)[bot] in [actions/setup-java#952](https://redirect.github.com/actions/setup-java/pull/952) > * Bump eslint-config-prettier from 8.10.0 to 10.1.8 by [`@dependabot`](https://github.com/dependabot)[bot] in [actions/setup-java#881](https://redirect.github.com/actions/setup-java/pull/881) > * Bump picomatch, `@types/jest`, jest, jest-circus and ts-jest by [`@dependabot`](https://github.com/dependabot)[bot] in [actions/setup-java#1016](https://redirect.github.com/actions/setup-java/pull/1016) > * Bump `@types/node` from 24.1.0 to 25.9.3 by [`@dependabot`](https://github.com/dependabot)[bot] in [actions/setup-java#950](https://redirect.github.com/actions/setup-java/pull/950) > * Implement pagination with link headers for Adoptium based apis by [`@johnoliver`](https://github.com/johnoliver) in [actions/setup-java#1014](https://redirect.github.com/actions/setup-java/pull/1014) > * Make the Adoptopenjdk package type look at the Temurin repo first for latest assets by [`@johnoliver`](https://github.com/johnoliver) in [actions/setup-java#522](https://redirect.github.com/actions/setup-java/pull/522) > * Bump `@vercel/ncc` from 0.38.1 to 0.44.0 by [`@dependabot`](https://github.com/dependabot)[bot] in [actions/setup-java#1018](https://redirect.github.com/actions/setup-java/pull/1018) > > New Contributors > ---------------- > > * [`@alaahong`](https://github.com/alaahong) made their first contribution in [actions/setup-java#969](https://redirect.github.com/actions/setup-java/pull/969) > * [`@Copilot`](https://github.com/Copilot) made their first contribution in [actions/setup-java#999](https://redirect.github.com/actions/setup-java/pull/999) > * [`@johnoliver`](https://github.com/johnoliver) made their first contribution in [actions/setup-java#1014](https://redirect.github.com/actions/setup-java/pull/1014) > > **Full Changelog**: <actions/setup-java@v5...v5.3.0> Commits * [`ad2b381`](actions/setup-java@ad2b381) Bump `@vercel/ncc` from 0.38.1 to 0.44.0 ([#1018](https://redirect.github.com/actions/setup-java/issues/1018)) * [`b24df5b`](actions/setup-java@b24df5b) Make the Adoptopenjdk package type look at the Temurin repo first for latest ... * [`43120bc`](actions/setup-java@43120bc) Implement pagination with link headers for Adoptium based apis ([#1014](https://redirect.github.com/actions/setup-java/issues/1014)) * [`ad9d6a6`](actions/setup-java@ad9d6a6) Bump `@types/node` from 24.1.0 to 25.9.3 ([#950](https://redirect.github.com/actions/setup-java/issues/950)) * [`039af37`](actions/setup-java@039af37) Bump picomatch, `@types/jest`, jest, jest-circus and ts-jest ([#1016](https://redirect.github.com/actions/setup-java/issues/1016)) * [`1756ab6`](actions/setup-java@1756ab6) Bump eslint-config-prettier from 8.10.0 to 10.1.8 ([#881](https://redirect.github.com/actions/setup-java/issues/881)) * [`662bb59`](actions/setup-java@662bb59) Bump `@typescript-eslint/eslint-plugin` from 8.35.1 to 8.46.2 ([#952](https://redirect.github.com/actions/setup-java/issues/952)) * [`1071fc1`](actions/setup-java@1071fc1) fix: resolve npm audit vulnerabilities in fast-xml-builder and fast-xml-parse... * [`576b821`](actions/setup-java@576b821) Merge pull request [#674](https://redirect.github.com/actions/setup-java/issues/674) from gdams/alpine * [`307d3a2`](actions/setup-java@307d3a2) update readme for ubuntu sudo java\_home behavior ([#1013](https://redirect.github.com/actions/setup-java/issues/1013)) * Additional commits viewable in [compare view](actions/setup-java@be666c2...ad2b381) Updates `graalvm/setup-graalvm` from 1.5.4 to 1.5.6 Release notes *Sourced from [graalvm/setup-graalvm's releases](https://github.com/graalvm/setup-graalvm/releases).* > v1.5.6 > ------ > > What's Changed > -------------- > > * Always set up MSVC environment on Windows by [`@gastaldi`](https://github.com/gastaldi) in [graalvm/setup-graalvm#221](https://redirect.github.com/graalvm/setup-graalvm/pull/221) > > **Full Changelog**: <graalvm/setup-graalvm@v1.5.5...v1.5.6> > > v1.5.5 > ------ > > What's Changed > -------------- > > * Add Visual Studio 2026 to known installations by [`@gastaldi`](https://github.com/gastaldi) in [graalvm/setup-graalvm#219](https://redirect.github.com/graalvm/setup-graalvm/pull/219) > > New Contributors > ---------------- > > * [`@gastaldi`](https://github.com/gastaldi) made their first contribution in [graalvm/setup-graalvm#219](https://redirect.github.com/graalvm/setup-graalvm/pull/219) > > **Full Changelog**: <graalvm/setup-graalvm@v1.5.4...v1.5.5> Commits * [`6f3fa03`](graalvm/setup-graalvm@6f3fa03) Bump version to `1.5.6`. * [`74ee89f`](graalvm/setup-graalvm@74ee89f) Run `npm audit fix`. * [`0ad466a`](graalvm/setup-graalvm@0ad466a) Always set up MSVC environment on Windows * [`809afe6`](graalvm/setup-graalvm@809afe6) Bump version to `1.5.5`. * [`44ffb1c`](graalvm/setup-graalvm@44ffb1c) Fix VS 2026 installation path to use internal version number * [`e1d3380`](graalvm/setup-graalvm@e1d3380) Add Visual Studio 2026 to known installations * See full diff in [compare view](graalvm/setup-graalvm@329c42c...6f3fa03) Updates `anthropics/claude-code-action` from 1.0.144 to 1.0.151 Release notes *Sourced from [anthropics/claude-code-action's releases](https://github.com/anthropics/claude-code-action/releases).* > v1.0.151 > -------- > > What's Changed > -------------- > > * fix: skip workflow validation token exchange failures by [`@Ryanoonan`](https://github.com/Ryanoonan) in [anthropics/claude-code-action#1417](https://redirect.github.com/anthropics/claude-code-action/pull/1417) > > New Contributors > ---------------- > > * [`@Ryanoonan`](https://github.com/Ryanoonan) made their first contribution in [anthropics/claude-code-action#1417](https://redirect.github.com/anthropics/claude-code-action/pull/1417) > > **Full Changelog**: <anthropics/claude-code-action@v1...v1.0.151> > > v1.0.150 > -------- > > **Full Changelog**: <anthropics/claude-code-action@v1...v1.0.150> > > v1.0.149 > -------- > > What's Changed > -------------- > > * fix(parse-sdk-options): prevent shell-quote from collapsing unquoted Bash(X:\*) rules to bare Bash by [`@alexglynn`](https://github.com/alexglynn) in [anthropics/claude-code-action#1350](https://redirect.github.com/anthropics/claude-code-action/pull/1350) > * fix(mcp): align allowed-tools parser with SDK option parser by [`@bymle`](https://github.com/bymle) in [anthropics/claude-code-action#1373](https://redirect.github.com/anthropics/claude-code-action/pull/1373) > > New Contributors > ---------------- > > * [`@alexglynn`](https://github.com/alexglynn) made their first contribution in [anthropics/claude-code-action#1350](https://redirect.github.com/anthropics/claude-code-action/pull/1350) > > **Full Changelog**: <anthropics/claude-code-action@v1...v1.0.149> > > v1.0.148 > -------- > > **Full Changelog**: <anthropics/claude-code-action@v1...v1.0.148> > > v1.0.147 > -------- > > What's Changed > -------------- > > * Add pr-stamp-sweep review workflow by [`@ashwin-ant`](https://github.com/ashwin-ant) in [anthropics/claude-code-action#1409](https://redirect.github.com/anthropics/claude-code-action/pull/1409) > > **Full Changelog**: <anthropics/claude-code-action@v1...v1.0.147> > > v1.0.146 > -------- > > What's Changed > -------------- > > * test: add unit tests for parseGitHubContext and context type guards by [`@mateuscmtropical`](https://github.com/mateuscmtropical) in [anthropics/claude-code-action#1404](https://redirect.github.com/anthropics/claude-code-action/pull/1404) > * docs(faq): correct rebase FAQ to match actual behavior by [`@bymle`](https://github.com/bymle) in [anthropics/claude-code-action#1370](https://redirect.github.com/anthropics/claude-code-action/pull/1370) > * fix: fall back to inherited env for auth when inputs are empty by [`@kirsanium`](https://github.com/kirsanium) in [anthropics/claude-code-action#1342](https://redirect.github.com/anthropics/claude-code-action/pull/1342) > * fix: break SDK iterator after result message to prevent hang in pull\_request runs by [`@scobbe`](https://github.com/scobbe) in [anthropics/claude-code-action#1339](https://redirect.github.com/anthropics/claude-code-action/pull/1339) > * Pin setup-bun binary for post-steps by [`@kiwigitops`](https://github.com/kiwigitops) in [anthropics/claude-code-action#1365](https://redirect.github.com/anthropics/claude-code-action/pull/1365) > * fix: clear stale claude-prompts dir before each write by [`@kyungilpark`](https://github.com/kyungilpark) in [anthropics/claude-code-action#1288](https://redirect.github.com/anthropics/claude-code-action/pull/1288) > * Include labels in formatContext() output for issues and PRs by [`@joshpayne-joby`](https://github.com/joshpayne-joby) in [anthropics/claude-code-action#1298](https://redirect.github.com/anthropics/claude-code-action/pull/1298) > * fix(sanitizer): match attribute quotes by type to avoid mangling content by [`@bymle`](https://github.com/bymle) in [anthropics/claude-code-action#1371](https://redirect.github.com/anthropics/claude-code-action/pull/1371) > * docs: fix execution file parsing example by [`@looooown2006`](https://github.com/looooown2006) in [anthropics/claude-code-action#1297](https://redirect.github.com/anthropics/claude-code-action/pull/1297) > * fix(image-downloader): detect image type from magic bytes, not URL extension by [`@pmespresso`](https://github.com/pmespresso) in [anthropics/claude-code-action#1396](https://redirect.github.com/anthropics/claude-code-action/pull/1396) > > New Contributors > ---------------- > > * [`@mateuscmtropical`](https://github.com/mateuscmtropical) made their first contribution in [anthropics/claude-code-action#1404](https://redirect.github.com/anthropics/claude-code-action/pull/1404) > * [`@bymle`](https://github.com/bymle) made their first contribution in [anthropics/claude-code-action#1370](https://redirect.github.com/anthropics/claude-code-action/pull/1370) > * [`@kirsanium`](https://github.com/kirsanium) made their first contribution in [anthropics/claude-code-action#1342](https://redirect.github.com/anthropics/claude-code-action/pull/1342) > * [`@scobbe`](https://github.com/scobbe) made their first contribution in [anthropics/claude-code-action#1339](https://redirect.github.com/anthropics/claude-code-action/pull/1339) ... (truncated) Commits * [`806af32`](anthropics/claude-code-action@806af32) chore: bump Claude Code to 2.1.181 and Agent SDK to 0.3.181 * [`0a08a86`](anthropics/claude-code-action@0a08a86) fix: skip workflow validation token exchange failures ([#1417](https://redirect.github.com/anthropics/claude-code-action/issues/1417)) * [`9dd8b95`](anthropics/claude-code-action@9dd8b95) chore: bump Claude Code to 2.1.179 and Agent SDK to 0.3.179 * [`4d7e1f0`](anthropics/claude-code-action@4d7e1f0) chore: bump Claude Code to 2.1.178 and Agent SDK to 0.3.178 * [`3d9f0dc`](anthropics/claude-code-action@3d9f0dc) fix(mcp): align allowed-tools parser with SDK option parser ([#1373](https://redirect.github.com/anthropics/claude-code-action/issues/1373)) * [`a5e5d3b`](anthropics/claude-code-action@a5e5d3b) fix(parse-sdk-options): prevent shell-quote from collapsing unquoted Bash(X:\*... * [`d5726de`](anthropics/claude-code-action@d5726de) chore: bump Claude Code to 2.1.177 and Agent SDK to 0.3.177 * [`56fa348`](anthropics/claude-code-action@56fa348) chore: bump Claude Code to 2.1.176 and Agent SDK to 0.3.176 * [`82d95d4`](anthropics/claude-code-action@82d95d4) Add pr-stamp-sweep review workflow ([#1409](https://redirect.github.com/anthropics/claude-code-action/issues/1409)) * [`0cb4f3e`](anthropics/claude-code-action@0cb4f3e) chore: bump Claude Code to 2.1.175 and Agent SDK to 0.3.175 * Additional commits viewable in [compare view](anthropics/claude-code-action@0f97b95...806af32) Updates `ruby/setup-ruby` from 1.312.0 to 1.313.0 Release notes *Sourced from [ruby/setup-ruby's releases](https://github.com/ruby/setup-ruby/releases).* > v1.313.0 > -------- > > What's Changed > -------------- > > * Add jruby-10.0.6.0 by [`@ruby-builder-bot`](https://github.com/ruby-builder-bot) in [ruby/setup-ruby#921](https://redirect.github.com/ruby/setup-ruby/pull/921) > > **Full Changelog**: <ruby/setup-ruby@v1.312.0...v1.313.0> Commits * [`89f9052`](ruby/setup-ruby@89f9052) Add jruby-10.0.6.0 * See full diff in [compare view](ruby/setup-ruby@12fd324...89f9052) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- Dependabot commands and options You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions
Description:
This PR standardizes the “version not found” error handling across Java distribution installers by introducing a shared helper in JavaBase. It also updates installer and caching tests to align with the new message format and reduces noisy
core.erroroutput during test runs.Related issue:
#977, #978
Check list: