GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||
GeezerVison is showing github.com — test(setup-matrix): give each case its own home directory by jdalton · Pull Request #142 · SocketDev/socket-patch Conversation
|
| Variable | Without it, this leaks |
|---|---|
CARGO_HOME |
cargo registry and credentials |
GOPATH + GOMODCACHE |
Go module cache |
GOCACHE |
Go build cache — separate from the module cache, so GOPATH alone is not enough |
PNPM_HOME |
pnpm content store |
COREPACK_HOME |
corepack shims |
NUGET_PACKAGES |
NuGet packages |
XDG_DATA_HOME, XDG_CONFIG_HOME, XDG_STATE_HOME |
anything XDG-aware |
The verification helpers needed no changes — they read through these same variables, so they follow the new location automatically.
Ran:
bash -n on the modified script — passes.WORKDIR — every variable resolves inside it, and the home directory is created.Did not run: the full matrix end to end. It needs Docker images per ecosystem and performs real installs, so this is verified at the script level rather than by a complete run.
CI is unaffected. The setup-matrix job runs each case inside a per-ecosystem container, where $HOME is the container's and thrown away. This problem is specific to host mode.
Trade-off: a host run now starts from an empty cache, so the first run of each case re-downloads its dependencies. That cost is also what makes the result reproducible.
Not touched here, to keep this small:
crates/socket-patch-cli/tests/ run real installs during a plain cargo test without redirecting caches.e2e_vendor_pypi_build.rs passes an empty environment to pip, while the uv half of that same file sets one up properly.Happy to follow up if you would like these handled the same way.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
Bugbot Autofix is ON. A cloud agent has been kicked off to fix the reported issue.
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit a83e84c. Configure here.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
run-case.sh isolated only XDG_CACHE_HOME, so every package manager it drives resolved its cache, store and credentials from the caller's real home. Under `setup-matrix.sh run --host` that is the developer's own home directory. Each case now gets HOME inside its per-case WORKDIR, along with the variables that outrank HOME for their tools (CARGO_HOME, GOPATH, GOMODCACHE, GOCACHE, PNPM_HOME, COREPACK_HOME, NUGET_PACKAGES and the remaining XDG dirs). The verification helpers read through those same variables, so they keep resolving without changes.
a83e84c to
930cc3c
Compare
#142 + #143 + #144, plus review fixes) (#146) Squashes jdalton's cache-isolation stack — #142 (setup-matrix per-case HOME), #143 (cache_env::isolate() across the Rust integration suites), #144 (hosted production suite) — and folds in the fixes from a 13-agent adversarial review of the stack: - e2e_hosted_production.rs: widen the gem leg's known-defect matcher to the post-depscan#23630 registry signature (compact index 404s as not_built; the /api/v1/dependencies fallback serves an empty 200 body, which dies as "marshal data too short" under bundler 2.x classic Marshal and as "undefined method 'bytes' for nil" under SafeMarshal rubies). This unblocks the hosted-e2e required check, red on every branch since the 2026-08-02 deploy. Verified live: the leg passes against the current production registry. Also isolate the has_command probe (the corepack-download leak the stack closes everywhere else). - e2e_npm.rs: partial COREPACK_HOME/npm_config_cache pin on the binary runner — the macOS global auto-discovery test spawns the CLI, whose yarn/pnpm prefix probes downloaded ~900 corepack files into the real home (full isolate() would defeat the test; same trade-off as global_packages_e2e.rs). - e2e_vendor_gem_build.rs, e2e_vendor_pypi_build.rs: isolate the bundler/ruby/python/uv availability probes so probe and fixture install answer for the same environment. - run-case.sh: export MAVEN_OPTS=-Duser.home so maven actually follows the case home (the JVM derives user.home from passwd, not $HOME — mvn kept writing the real ~/.m2 while the verify helper scanned the empty fake one); preserve rbenv/pyenv/nvm/volta/asdf/sdkman roots and copy ~/.tool-versions so --host runs still launch their toolchains. - cache_env.rs: document why GEM_HOME/GEM_PATH are deliberately not pinned and the --install-dir/BUNDLE_PATH invariant that keeps that safe. Co-authored-by: jdalton <[email protected]> Co-authored-by: Claude Fable 5 <[email protected]>
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.