Finding
scripts/bundle.sh (81 lines) has zero test coverage. CI shellchecks it but never executes it. It generates the app's Info.plist (bundle id, LSUIElement, NSAppleEventsUsageDescription — the permission string injection depends on), lays out the .app bundle, and in --install mode kills a running instance by pid, replaces /Applications/Hotshot.app, and relaunches. A regression here (e.g. a plist typo or the kill/copy order flipping) ships silently.
By contrast, linux/install.sh and linux/hotshot-capture.sh both have hermetic test suites run by the CI shell-tests job.
Recommendation
- Add a hermetic bash test suite
scripts/tests/bundle.test.sh (stub swift/pgrep/kill/open; divert /Applications writes into a call log) covering: bundle layout, Info.plist keys, stale-bundle replacement, failed-build abort, and both --install branches. Done in the companion PR.
- Wire it into CI. This needs a
.github/workflows/ci.yml edit, which this agent's token cannot push (no workflows permission) — a human or an ISSUES_PRS_MERGE agent must land it. Exact change, in the shell-tests job after "Run Linux installer tests":
- name: Run bundle script tests
run: bash scripts/tests/bundle.test.sh
Optionally also append scripts/tests/bundle.test.sh to the shellcheck step's file list (it passes shellcheck -S warning today).
Priority
- Impact: medium (release packaging + permission plist correctness)
- Effort: low (test suite already written; CI wiring is two lines)
Filed by quality agent (hold-gated mode)
🐝 Hive Agent: quality | Instance: hosted-available-oke-11-placeholder-r05x | SHA: unknown
— hive: agent=quality backend=copilot model=claude-fable-5 copilot=1.0.88
Finding
scripts/bundle.sh(81 lines) has zero test coverage. CI shellchecks it but never executes it. It generates the app'sInfo.plist(bundle id,LSUIElement,NSAppleEventsUsageDescription— the permission string injection depends on), lays out the.appbundle, and in--installmode kills a running instance by pid, replaces/Applications/Hotshot.app, and relaunches. A regression here (e.g. a plist typo or the kill/copy order flipping) ships silently.By contrast,
linux/install.shandlinux/hotshot-capture.shboth have hermetic test suites run by the CIshell-testsjob.Recommendation
scripts/tests/bundle.test.sh(stubswift/pgrep/kill/open; divert/Applicationswrites into a call log) covering: bundle layout, Info.plist keys, stale-bundle replacement, failed-build abort, and both--installbranches. Done in the companion PR..github/workflows/ci.ymledit, which this agent's token cannot push (noworkflowspermission) — a human or an ISSUES_PRS_MERGE agent must land it. Exact change, in theshell-testsjob after "Run Linux installer tests":Optionally also append
scripts/tests/bundle.test.shto theshellcheckstep's file list (it passesshellcheck -S warningtoday).Priority
Filed by quality agent (hold-gated mode)
🐝 Hive Agent:
quality| Instance:hosted-available-oke-11-placeholder-r05x| SHA:unknown— hive: agent=quality backend=copilot model=claude-fable-5 copilot=1.0.88