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
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 55/100
Piste de recherche
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.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
[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.
- Langage dominant
- Rust
- Étoiles
- 9
- Forks
- 2
- Merge moyen
- 20 h 47 min
- PR mergées (30 j)
- 681
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de SocketDev/socket-patch
-
agent:triaged arch-audit priority:p3 refactor
Difficulté 2/5 1-3 heures Accessibilité débutants 83/100
SocketDev/socket-patch#1860 ·
Les mainteneurs répondent en général sous 1 jour
-
agent:triaged arch-audit priority:p3 refactor
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
SocketDev/socket-patch#1838 ·
Les mainteneurs répondent en général sous 1 jour
-
arch-audit refactor
Difficulté 4/5 3-5 jours Accessibilité débutants 54/100
SocketDev/socket-patch#1993 ·
Les mainteneurs répondent en général sous 1 jour
-
arch-audit refactor
Difficulté 3/5 1-2 jours Accessibilité débutants 66/100
SocketDev/socket-patch#1992 ·
Les mainteneurs répondent en général sous 1 jour
-
agent:triaged arch-audit priority:p3 refactor
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
SocketDev/socket-patch#1987 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de SocketDev/socket-patch
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
Les mainteneurs répondent en général sous 1 jour
-
Rename SerVtdExt to ServtdExtOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
GiganticMinecraft/seichi-portal-backend#1651 ·
Les mainteneurs répondent en général sous 1 jour
-
Android visitors are offered the Linux .deb on cap.so's homepage and download pagePeut-être pris @patrickballard l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
CapSoftware/Cap#3677 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour