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
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 55/100
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
[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.
- Lenguaje dominante
- Rust
- Estrellas
- 9
- Forks
- 2
- Merge medio
- 20 h 47 min
- PR fusionados (30 d)
- 681
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de SocketDev/socket-patch
-
agent:triaged arch-audit priority:p3 refactor
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
SocketDev/socket-patch#1860 ·
Los mantenedores suelen responder en 1 día
-
agent:triaged arch-audit priority:p3 refactor
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
SocketDev/socket-patch#1838 ·
Los mantenedores suelen responder en 1 día
-
arch-audit refactor
Dificultad 4/5 3-5 días Aptitud para principiantes 54/100
SocketDev/socket-patch#1993 ·
Los mantenedores suelen responder en 1 día
-
arch-audit refactor
Dificultad 3/5 1-2 días Aptitud para principiantes 66/100
SocketDev/socket-patch#1992 ·
Los mantenedores suelen responder en 1 día
-
agent:triaged arch-audit priority:p3 refactor
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
SocketDev/socket-patch#1987 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de SocketDev/socket-patch
Issues similares
-
A-linter
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
oxc-project/oxc#28783 ·
Los mantenedores suelen responder en 1 día
-
Substrait consumer doesn't recognise `shift_left` / `shift_right` from functions_arithmetic.yamlAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
apache/datafusion#27059 ·
Los mantenedores suelen responder en 1 día
-
Bump calamine to 0.38: RUSTSEC-2026-0436 (CFB/OLE2 panic and unbounded allocation) fails cargo auditAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
docling-project/docling.rs#979 ·
Los mantenedores suelen responder en 1 día
-
llm translation
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día