fix: sync functional tests openshell version with shared pin - #2535
Conversation
The functional-tests workflow hardcoded openshell 0.0.38 while the rest of the repo pins 0.0.63 via .github/scripts/openshell-version.sh. Source the shared script instead of hardcoding the version, and add an early version-mismatch check in eval/run-functional.sh so any drift is caught regardless of how the tests are invoked. Assisted-by: Claude Opus 4.6 <noreply@anthropic.com> Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Ralph Bean <rbean@redhat.com>
PR Summary by QodoFix functional tests to use shared OpenShell version pin Description
Diagram
High-Level Assessment
Files changed (2)
|
Site previewPreview: https://3fdb8a3b-site.fullsend-ai.workers.dev Commit: |
|
🤖 Finished Review · ✅ Success · Started 9:15 PM UTC · Completed 9:25 PM UTC |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
ReviewFindingsMedium
Low
Previous runReviewFindingsMedium
Low
Previous run (2)ReviewFindingsMedium
Low
Labels: PR modifies CI workflow files (.github/workflows/) and eval scripts |
|
|
||
| # Fail fast if openshell version doesn't match the repo pin | ||
| if command -v openshell >/dev/null 2>&1; then | ||
| source "${REPO_ROOT}/.github/scripts/openshell-version.sh" |
There was a problem hiding this comment.
[low] edge-case
The version extraction openshell --version | awk '{print $NF}' assumes the last whitespace-delimited field is the version string. If the output format were to include additional tokens, $NF would return the wrong value. Risk is theoretical — standard Python CLI tools output toolname X.Y.Z where $NF works correctly.
| exit 1 | ||
| fi | ||
|
|
||
| # Fail fast if openshell version doesn't match the repo pin |
There was a problem hiding this comment.
[low] error-handling-gap
The source of openshell-version.sh is not guarded by a file-existence check. The script's set -euo pipefail ensures it exits on failure, but unlike the other pre-flight checks in this file, there is no user-friendly error message.
Suggested fix: Add a guard before sourcing: if [[ ! -f "${REPO_ROOT}/.github/scripts/openshell-version.sh" ]]; then echo "ERROR: ..."; exit 1; fi
| # gateway start) is duplicated from action.yml. Extract into a | ||
| # shared script (e.g. .github/scripts/setup-openshell.sh) so the | ||
| # version and config stay in sync across both places. | ||
| - name: Set OpenShell version |
There was a problem hiding this comment.
[low] implementation-detail
The workflow step name 'Set OpenShell version' is slightly misleading since the sourced script also sets OPENSHELL_SHA. Consider updating to 'Set OpenShell version and SHA'.
action.yml doesn't set OPENSHELL_SUPERVISOR_IMAGE — it lets the gateway use its built-in default. The functional tests had an old hardcoded SHA that doesn't correspond to the openshell release SHA. Remove the override so the 0.0.63 gateway uses its own default supervisor image. Assisted-by: Claude Opus 4.6 <noreply@anthropic.com> Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Ralph Bean <rbean@redhat.com>
|
🤖 Finished Review · ❌ Failure · Started 9:34 PM UTC · Completed 9:45 PM UTC |
The functional tests manually downloaded the gateway binary, started it in the background, and registered it with the CLI — an approach that worked with 0.0.38 but broke with 0.0.63 (gateway port 8080 never came up). Replace the manual setup with the same pattern action.yml uses: - Write gateway.env config - Install via the shared install-openshell.sh script - Let openshell manage its own gateway This matches the changes made in PR #2315 when openshell was bumped from 0.0.54 to 0.0.63. Assisted-by: Claude Opus 4.6 <noreply@anthropic.com> Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Ralph Bean <rbean@redhat.com>
|
🤖 Review · |
Assisted-by: Claude Opus 4.6 <noreply@anthropic.com> Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Ralph Bean <rbean@redhat.com>
|
🤖 Finished Review · ✅ Success · Started 10:56 PM UTC · Completed 11:07 PM UTC |
| run: echo "OPENSHELL_VERSION=0.0.38" >> "${GITHUB_ENV}" | ||
|
|
||
| - name: Install OpenShell CLI | ||
| - name: Configure OpenShell gateway |
There was a problem hiding this comment.
[low] incomplete-duplication-removal
The diff removes the TODO comment that identified duplication between functional-tests.yml and action.yml. The PR resolves version pin and CLI install duplication, but Podman setup remains duplicated. Removing the TODO is slightly premature.
|
🤖 Finished Retro · ✅ Success · Started 9:35 AM UTC · Completed 9:42 AM UTC |
Retro: PR #2535 — sync functional tests openshell versionVerdict: Workflow performed well. No new proposals — all improvement areas are covered by existing open issues. Timeline
Review quality assessmentThe review bot performed well on this PR:
Inefficiencies identified (all covered by existing issues)
The concurrency group cancellation worked correctly (run 3 was properly superseded by run 4 within seconds). The existing issue backlog for review deduplication is extensive, suggesting this is a known and actively tracked area. |
…rsion-sync fix: sync functional tests openshell version with shared pin
Summary
0.0.38while the rest of the repo pins0.0.63via.github/scripts/openshell-version.sh. Sources the shared script instead.eval/run-functional.shso drift is caught regardless of how tests are invoked (CI or locally).${OPENSHELL_SHA}for the supervisor image tag instead of a hardcoded SHA.Spotted in #2534.
Test plan
0.0.63from the shared scripteval/run-functional.shfails fast if an old openshell is installed locally🤖 Generated with Claude Code