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
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 55/100
Direção de pesquisa
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.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
[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.
- Linguagem predominante
- Rust
- Estrelas
- 9
- Forks
- 2
- Merge médio
- 18h 47min
- PRs com merge (30d)
- 637
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de SocketDev/socket-patch
-
agent:triaged arch-audit priority:p3 refactor
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 83/100
SocketDev/socket-patch#1860 ·
Mantenedores costumam responder em até 1 dia
-
agent:triaged arch-audit priority:p3 refactor
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
SocketDev/socket-patch#1838 ·
Mantenedores costumam responder em até 1 dia
-
arch-audit refactor
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
SocketDev/socket-patch#1987 ·
Mantenedores costumam responder em até 1 dia
-
agent:triaged arch-audit priority:p3 refactor
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
SocketDev/socket-patch#1983 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
agent:triaged arch-audit bug priority:p3
Dificuldade 3/5 Meio dia Facilidade para iniciantes 55/100
SocketDev/socket-patch#1982 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de SocketDev/socket-patch
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
Mantenedores costumam responder em até 2 dias
-
Android visitors are offered the Linux .deb on cap.so's homepage and download pageTalvez já em andamento @patrickballard assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
CapSoftware/Cap#3677 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
DioxusLabs/blitz#1371 ·
Mantenedores costumam responder em até 1 dia