fix(test): de git-testhulp hing op dezelfde pijp als de app deed #968
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!968
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/rawgit-pijp"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Vervolg op #966. Die PR repareerde de onbegrensde wacht op de uitvoer-pijp in
NativeGitCli._spawn. De ijkdraai op de oude main (GitHub-run 30477369421)liet daarna zien dat er een tweede plek met precies dezelfde fout zit — en
waarschijnlijk de plek waar het werkelijk misging.
Wat de ijkdraai liet zien
Opnieuw een ánder testgeval dan alle vorige draaien, opnieuw drie minuten stil,
opnieuw geen stack — en Linux en macOS groen.
De tweede pijp
_rawGit, de hulp die elk geval in dit bestand opbouwt, draaide git viaProcess.run. Die wacht net zo onbegrensd tot de pijp sluit als_spawndeed.Nagemeten met hetzelfde proefje als in #966:
Het kind was na een paar milliseconden klaar; de tien seconden zijn de
levensduur van het kleinkind.
Dat maakt dit de waarschijnlijkere van de twee vastlooplocaties: vrijwel elke
setUpin dit bestand doetcloneenpushlangs deze hulp, en dát zijn decommando's die
git-upload-pack/git-receive-packals kleinkind starten. Hetverklaart wat aan #966 alleen niet goed te verklaren was — waarom het elke
draai een ander geval trof, en waarom de time-out geen stack opleverde.
De wijziging
_rawGitloopt nu langsdebugSpawn, zodat de testhulp de gerepareerde vormerft in plaats van er een tweede, zwakkere kopie van te zijn. Twee dingen
die daarbij horen:
debugSpawnsluit het(
includeParentEnvironment: false, de kern van §10.2), en zonderSystemRoot/PATHEXT start
CreateProcessop Windows niet — dezelfde reden alsbij
_smokeEnvingit_cli_test(#926).GIT_CONFIG_GLOBALwordt opWindows
NULin plaats van/dev/null.terugkomt. Ruim, want dit draait ook op een zwaarbelaste CI-machine, en een
limiet die afloopt hoort iets te betekenen.
Waarom hier geen aparte regressietest bij zit
De regressie die dit bewaakt zit in
_spawn, en díe is in #966 al vastgelegdmet een geval dat rood staat zonder de fix (10 s versus 2 s). Deze PR verwijdert
alleen de weg eromheen. Een tweede test die hetzelfde nogmaals aantoont zou
niets bewaken wat nu niet al bewaakt is; wat hier gecontroleerd hoort te worden
is dat de suite die weg niet opnieuw inslaat, en dat is de import van
Process.rundie er niet meer staat.Poorten
make check— groen (exit 0).flutter test test/native_git_mirror_test.dart— 30 gevallen groen in 4 s.afhankelijkheid, uitgaand verkeer of publieke belofte. Het is een testhulp.
Voorbehoud
De Windows-leg is niet lokaal te toetsen. Of dit de vastloper wegneemt, blijkt
pas uit een
workflow_dispatch-draai op de spiegel ná de merge — de flakinesswas intermitterend, dus één groene draai is een aanwijzing en geen bewijs.