Summary
The repo ships two shell test suites and neither is executed anywhere — not by CI, not by the Makefile, not by any other script.
| Suite |
Size |
Status today |
arcup/test_arcup.sh |
829 lines, 25 assertions |
passes, exit 0 |
.github/scripts/test-finalize-release.sh |
65 lines |
passes, exit 0 |
$ grep -rn "test_arcup" --include="*" . | grep -v "^./arcup/test_arcup.sh"
(no matches)
$ grep -rn "test-finalize-release" .github/ Makefile | grep -v "^.github/scripts/test-finalize-release.sh"
(no matches)
Both run in seconds and need no network — test_arcup.sh sources arcup with ARCUP_SKIP_MAIN=1 and drives it against local fixtures.
Why it matters for arcup specifically
arcup is the installer users actually run, and it is where the externally reported defects have concentrated: #45 (merged), plus #204 and #205 still open. Its suite already covers those exact areas:
Worth being precise about what this does and does not claim: the suite passes on main today, so it does not currently catch #204 or #205 — those need new assertions. The point is that a regression test added alongside either fix would never run, which makes writing one pointless until a job exists.
Suggested fix
A shell-tests job running both suites. No toolchain needed, so it is cheap and can run in parallel with everything else. Opened as #249.
The suites are written to be portable — arcup selects between sha256sum and shasum, and test_arcup.sh branches on GNU vs BSD tar when building its path-traversal fixture — but I verified them on macOS only, so the job's first run on ubuntu-latest is the confirming check. The failure mode is a red job rather than anything silent.
Summary
The repo ships two shell test suites and neither is executed anywhere — not by CI, not by the Makefile, not by any other script.
arcup/test_arcup.sh.github/scripts/test-finalize-release.shBoth run in seconds and need no network —
test_arcup.shsourcesarcupwithARCUP_SKIP_MAIN=1and drives it against local fixtures.Why it matters for
arcupspecificallyarcupis the installer users actually run, and it is where the externally reported defects have concentrated: #45 (merged), plus #204 and #205 still open. Its suite already covers those exact areas:compares prerelease installer versionsandsame prerelease base is not newer— the ground Bug:arcupSemVer comparison treats prerelease and stable versions as equal #205 (version_gttreating prerelease and stable as equal) sits on.install_binary rejects symlink,archive path traversal fails,archive link entries fail,rejects non-https GitHub API URL,valid checksum file passes— the ground Security:arcup --self-updatereplaces the installer without authenticity verification #204 (self-update without authenticity verification) sits on.Worth being precise about what this does and does not claim: the suite passes on
maintoday, so it does not currently catch #204 or #205 — those need new assertions. The point is that a regression test added alongside either fix would never run, which makes writing one pointless until a job exists.Suggested fix
A
shell-testsjob running both suites. No toolchain needed, so it is cheap and can run in parallel with everything else. Opened as #249.The suites are written to be portable —
arcupselects betweensha256sumandshasum, andtest_arcup.shbranches on GNU vs BSDtarwhen building its path-traversal fixture — but I verified them on macOS only, so the job's first run onubuntu-latestis the confirming check. The failure mode is a red job rather than anything silent.