Skip to content

ci: expand an empty E2E -only-testing list under bash 3.2 - #15208

Merged
teamleaderleo merged 1 commit into
mainfrom
ci/fix-trusted-pool-seed-test
Sep 28, 2026
Merged

teamleaderleo merged 1 commit into
mainfrom
ci/fix-trusted-pool-seed-test

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 28, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

The E2E run step in .github/actions/e2e-run-tests/action.yml passes "${ONLY_TESTING[@]}" to xcodebuild under set -euo pipefail. macOS's /bin/bash is 3.2, where expanding an empty array under set -u is an unbound-variable error. The step builds ONLY_TESTING from TEST_SELECTORS, so an empty selector list stops it before xcodebuild runs. tests/test_ci_e2e_compilation_cache.py::test_a_missing_manifest_fails_instead_of_silently_compiling runs that case with ONLY_TESTING=(). On a Mac it failed with ONLY_TESTING[@]: unbound variable instead of the missing-manifest error, and it has done so since the test landed in #13908. Linux guard runners use a newer bash, so CI did not show it.

Both expansions now use ${ONLY_TESTING[@]+"${ONLY_TESTING[@]}"}, which expands to nothing for an empty array in bash 3.2 and 5 alike.

tests/test_seed_derived_data.py::test_the_trusted_pool_seeds_each_extra_root_as_its_own_lane also looked broken on main, but that was a local artifact. The test runs the workflow step, which calls scripts/ci/clear-dirs.sh by a relative path. It passes from the repository root, where ci-guards.yml runs it, and fails only when run from tests/. No change is needed there.

Testing

  • tests/test_ci_e2e_compilation_cache.py on macOS: 24 OK. It failed 1 of 24 before this change.
  • Also passed: tests/test_ci_focused_test_selectors.py, tests/test_ci_main_regression_bisect.py, tests/test_ci_app_host_pipe_capture.py, tests/test_ci_app_host_home_isolation.py, tests/test_ci_self_hosted_guard.sh. These are the other tests that read this action.
  • tests/test_seed_derived_data.py from the repository root: 62 OK on main.

Changelog

none

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Summary by cubic

Fixes the E2E run step on macOS by expanding ONLY_TESTING with ${ONLY_TESTING[@]+"${ONLY_TESTING[@]}"}. Bash 3.2 treats ${ONLY_TESTING[@]} on an empty array as unbound under set -u, so an empty selector list errored before xcodebuild ran, breaking the missing-manifest test case.

Note: test_seed_derived_data.py's trusted-pool seed test only fails when run from tests/; it passes from the repository root, where ci-guards.yml runs it. No change needed.

Written for commit b247399. Summary will update on new commits.

Review in cubic

"${ONLY_TESTING[@]}" on an empty array is an unbound-variable error under
set -u in bash 3.2, macOS's /bin/bash. The E2E run step builds the list
from TEST_SELECTORS, so an empty selector list stopped the step before
xcodebuild. tests/test_ci_e2e_compilation_cache.py's missing-manifest test
runs exactly that case and failed on macOS since #13908. Expand it with
${ONLY_TESTING[@]+"${ONLY_TESTING[@]}"}, which bash 3.2 accepts.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 28, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 11 seconds.

Check out review usage here.

View limit details

Limit details: You’ve used all 10 included reviews currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 55858b62-b5a7-4703-a37e-efbe31797fa9

📥 Commits

Reviewing files that changed from the base of the PR and between 714ec53 and b247399.

📒 Files selected for processing (1)
  • .github/actions/e2e-run-tests/action.yml

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@github-actions

Copy link
Copy Markdown
Contributor

Dogfood build of b247399a4817106b46b69b021fd032d65e83c4e1

cmux DEV pr-15208-b247399a.app

The link opens this exact commit in the cmux dev menu bar app. The build starts on each push and the page waits until it is ready; a newer push replaces it. It signs in against production, so Cloud or backend changes still need a tagged build with a development backend.

@teamleaderleo
teamleaderleo merged commit 89519d8 into main Sep 28, 2026
55 of 56 checks passed
@teamleaderleo
teamleaderleo deleted the ci/fix-trusted-pool-seed-test branch September 28, 2026 07:33
@github-actions

Copy link
Copy Markdown
Contributor

Merge receipt for b247399a48: every check was green at merge (11 verified; 12 skipped by policy). Full suite runs on main after merge.

rustybret pushed a commit to rustybret/bmux that referenced this pull request Sep 28, 2026
1b55596 Move saved sessions between cmux installs: restore-session --from / --export (manaflow-ai#14861)
0e1ab96 ci: force relay rollover renewal in release gate (manaflow-ai#15212)
a3d6070 Fix Cloud projection reads mutating observation state (manaflow-ai#15126)
5171e34 docs: say Cloud turns on per Mac through a staged rollout (manaflow-ai#15194)
53395a8 Recover a missing team scope instead of failing Mac pairing (manaflow-ai#15083)
454f191 ci: read the gui backlog eight runs at a time in late placement (manaflow-ai#15207)
147a616 ci: cmux-tui's release-path macOS builds take the owned side lane first (manaflow-ai#15184)
c74b646 License the cmux server software under the Business Source License 1.1 (manaflow-ai#15206)
0bb41fa test: restore the first responder before the dictation paste test's Cmd+V (manaflow-ai#15201)
b17bc18 ui-tests: empty Diagnostics Reporter's queue before closing it (manaflow-ai#15189)
d5f71c5 ci: iOS picker charges runs by their live jobs, not their titles (manaflow-ai#15188)
3c2cb96 Pane focus memory and New Pane (Auto Layout) (manaflow-ai#15125)
89519d8 ci: expand an empty E2E -only-testing list under bash 3.2 (manaflow-ai#15208)
f225777 Ghostty config live reload: keep saves during a reload, reload a theme preview once, watch XDG_CONFIG_HOME (manaflow-ai#15191)
714ec53 ci: stop at a full disk on clonefile, and never nest a seed clone (manaflow-ai#15199)
48d662a ci: ui-tests dispatches UI tests with main's dispatcher (manaflow-ai#15193)
3412812 Restore the Cloud template terminal in place after a daemon restart (manaflow-ai#15200)

# Conflicts:
#	.github/workflows/ci-macos.yml
#	.github/workflows/ci.yml
#	.github/workflows/cmux-tui-build-package.yml
#	.github/workflows/cmux-tui.yml
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.

1 participant