hermetic test children inherit GOFLAGS, GOENV, GOWORK, GOPATH and GOMODCACHE, which the go crawler and apply read; two hosted-production Go/Deno tests can't fail
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 55/100
Rechercherichtung
Start in crates/socket-patch-cli/tests/common/hermetic.rs, where the Extra enum and CRAWLER_EXTRAS live, and add a Go variant that scrubs GOFLAGS, GOWORK, GOPATH and GOMODCACHE and sets GOENV=off. Then replace the process-wide set_var calls in e2e_golang_build.rs and e2e_golang_hosted_build.rs with per-Command .env(..). Done means the four Go suites pass with GOFLAGS=-modfile=/nonexistent exported in the parent shell, and the two hosted-production tests in e2e_hosted_production.rs can fail.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
[agent] Filed by the scheduled architecture audit (audit-cli-tests). Register: register.
Kind: bug (test hermeticity). Register ID: T66.
Problem
The CLI reads Go settings from the environment and from the Go env file:
go_envreads the variable, else theGOENVfile, else$XDG_CONFIG_HOME/go/env(L110-L116).- The go crawler resolves the cache through
GOMODCACHEandGOPATH(go_crawler.rs L186-L189).`` - Go apply and vex honor
GOFLAGS=-modfile(#1799), and vendor readsGOWORK.
The test scrub has an Extra for each other crawler that reads the environment (Venv, Bundle, Composer, Pdm, Poetry), but none for Go. CRAWLER_EXTRAS is [Venv, Bundle, Composer]. Every socket-patch child therefore inherits the developer's or runner's Go environment.
Consequences found while auditing:
- Two hosted-production tests can't fail. In
e2e_hosted_production.rs:golang_hosted_redirects_only_via_goproxy_overridewrites a go.mod with norequireand no go.sum. The crawl therefore walks the ambientGOMODCACHE/$HOME/go, and on a clean runner only "scan exit 0" is asserted.deno_hosted_is_unsupportedinstalls nothing, so it gets 0 pins whether or not hosted Deno is supported.
- Process-wide env set and never restored.
e2e_golang_build.rssetsGOTOOLCHAINwithstd::env::set_varand never restores it (L198). The binary has noserial_test, so sibling tests read the environment in parallel while it is set.e2e_golang_hosted_build.rssetsGOTOOLCHAIN,GOFLAGS=-mod=modandGONOSUMDB=*the same way (L376-L378).````` Its later CLI children and in-process discovery see these values depending on test order.
- Only
GOMODCACHEis pinned.run_socketpinsGOMODCACHEonly, so an ambientGOFLAGS=-modfile=…or a usergo/envfile reachesapply/apply --check.
Proposed change
- Add
Extra::Gotohermetic.rs:- remove
GOFLAGS,GOWORK,GOPATHandGOMODCACHE; - set
GOENV=off.
- remove
- Include
Extra::GoinCRAWLER_EXTRAS. Tests that need a value set it after the scrub, as they already do. - Replace the process-wide
set_varcalls with per-Command.env(..)on the go and CLI children. Failing that, use a restoring guard under#[serial]. - In
e2e_hosted_production.rs:- Give the golang leg a
require+ go.sum and a fixtureGOMODCACHE, and assert the pin or skip code. - Install a Deno tree and assert a
hosted_skipscode, or delete the test.
- Give the golang leg a
Size
3–4 test files. About +40/−30 lines.
Acceptance criteria
- With
GOFLAGS=-modfile=/nonexistentandGOMODCACHE=/tmp/xexported in the parent shell, these suites still pass:e2e_golang,e2e_golang_build,e2e_golang_hosted_buildande2e_vendor_golang_build. - A hermetic selftest shows that the Go variables don't reach the child.
- The two production tests fail when their claimed behavior is broken.
- Vorherrschende Sprache
- Rust
- Sterne
- 9
- Forks
- 2
- Ø Merge
- 20 Std. 47 Min.
- Gemergte PRs (30 T.)
- 681
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus SocketDev/socket-patch
-
agent:triaged arch-audit priority:p3 refactor
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
SocketDev/socket-patch#1860 ·
Maintainer antworten meist innerhalb von 1 Tag
-
agent:triaged arch-audit priority:p3 refactor
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
SocketDev/socket-patch#1838 ·
Maintainer antworten meist innerhalb von 1 Tag
-
arch-audit refactor
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 54/100
SocketDev/socket-patch#1993 ·
Maintainer antworten meist innerhalb von 1 Tag
-
arch-audit refactor
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 66/100
SocketDev/socket-patch#1992 ·
Maintainer antworten meist innerhalb von 1 Tag
-
agent:triaged arch-audit priority:p3 refactor
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
SocketDev/socket-patch#1987 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in SocketDev/socket-patch
Ähnliche Issues
-
A-linter
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 73/100
oxc-project/oxc#28783 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Substrait consumer doesn't recognise `shift_left` / `shift_right` from functions_arithmetic.yamlOffenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
apache/datafusion#27059 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Bump calamine to 0.38: RUSTSEC-2026-0436 (CFB/OLE2 panic and unbounded allocation) fails cargo auditOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
docling-project/docling.rs#979 ·
Maintainer antworten meist innerhalb von 1 Tag
-
llm translation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
Maintainer antworten meist innerhalb von 1 Tag