Repository navigation
Add --version smoke tests to 27 untested packages - #820
Conversation
Each package gets `smoketest = standaloneTest "<abs path> <version flag>"`. A standalone test runs the binary with no shell against only the package's declared runtime closure, so it checks that the binary execs and every DT_NEEDED library is declared in runtime_deps. Tests are not part of SpecHash (minimal crates/graph/src/spec_hasher.rs hashes name/cmds/inputs/outputs/edges only), so this rebuilds nothing. For the same reason pkgs CI will report `standalone tests...Skip` for these packages. They were verified with `min check` in a pkgbuild session against the cached artifacts: 27/27 Pass (aarch64). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (27)
Included review availability: This review used your included allowance. 2 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 4 reviews per hour. 📝 WalkthroughWalkthroughTwenty-six package build specifications now import ChangesPackage smoke tests
Priority: ➖ Normal Estimated code review effort: 2 (Simple) | ~10 minutes Change: Other Merge Risk: ⚪ Minimal · up to The reported aarch64 run passed all 27 smoke tests. No actionable merge blocker is established; amd64 remains unverified. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Verified all 27: each binary in cmds is a dedicated usr/bin/<bin> OutputBin on the PR head and is installed by the build.sh; each flag is an exit-0 path for that tool (ffmpeg -version, tmux -V, nginx -v, openssl version, dav1d/gperf/dot/xxhsum print to stderr but exit 0). bzip2 --help is correct: in 1.0.8 --version only prints the license and falls through to compressing stdin. Import ordering correct in all 27 (standaloneTest before subsetOf). The -27 lines are purely the rewritten import lines. No main-side changes to these files since merge-base.
Two notes for the record:
testsis not in SpecHash, sominimal-checkprintsstandalone tests...Skipfor these; the green CI run does not exercise them. Per the body the 27/27 pass was arm64 only. Low risk, all arch-agnostic flags.- Path style: this PR uses
/usr/bin/<bin>; 53 of the ~63 existingstandaloneTestusers use/bin/<bin>. Both forms exist and pass on main. Cosmetic.
First batch from the standalone-test survey: 220 packages ship a binary but have no tests. This adds the cheapest useful test to 27 of them:
Why it's not just cosmetic: a standalone test execs the binary with no shell, in a sandbox containing only the package's declared runtime closure. So a pass means the ELF runs and every
DT_NEEDEDlibrary is declared inruntime_deps. Drafting this batch found 7 packages that fail it (below), which themissing runtime_depschecker currently passes.Packages (27): acl, bison, bzip2 (
--help; no exit-0 version flag), dav1d, expat (xmlwf -v), ffmpeg, flex, fribidi, gdbm, gh, gnutls, gperf, graphviz (dot -V), less, libpsl, lz4, m4, nginx (-v), openssl (version), pciutils, redis, ripgrep, sqlite, tmux (-V), wget, xxhash, xz.Rebuild cost: none.
testsis not in SpecHash (minimalcrates/graph/src/spec_hasher.rs), so every artifact stays cached.CI note: for the same reason,
minimal-checkwill printstandalone tests...Skipfor these packages, because CI only runs tests for packages it rebuilt. Don't read a green check as proof the tests ran. Verified instead withmin check --packages <all 27>in a freshpkgbuildsession against cached artifacts: 27/27 Pass, all other checks Pass. That ran on aarch64 only; amd64 is unverified.Held back: 7 real missing-runtime-deps bugs (follow-up PR)
These fail the smoke test with exit 127 and run once
baseis added. The libraries were identified withlddinside the test sandbox:runtime_depspcre2grep)idn2)Fixing these changes
runtime_deps, which is hashed, and zstd/pcre2/file sit under the toolchain. So that PR is a rebuild and gets its own review.🤖 Generated with Claude Code
Summary by CodeRabbit