fix(test): Windows-testleg op de spiegel-CI groen (padscheiding, spawn-milieu, mock-contracten) #928
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!928
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/926-windows-mirror-ci-test-leg"
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?
De volledige-matrix-CI op de GitHub-spiegel (
.github/workflows/ci.yml, draait op elke push) had een al langer rode Windows-leg (Test (windows-2022)) — alle recente main-pushes faalden identiek. Linux-gate, macOS, web-hardening, supply-chain en docs zijn groen. Geen release-impact: de echte uitbrengpoort is Forgejo-op-tag (Mac-runner,make check-no-coverage) en kent geen Windows-leg; de spiegel-Windows-leg is puur een tweede faalmail-kanaal. Fixt #926.Aard: 15 falende tests in 8 bestanden — allemaal testbugs
Geen enkele is een productbug. De app gebruikt overal
p.join(platform-eigen),_hardenedEnvdraagt de Windows-essentials (SystemRoot/PATHEXT/PATH), en de pin/guard-argv-opbouw slaagt óók op Windows. De tests maakten POSIX-aannames.bulk_import_runner_test(5),slide_dedup_dialogs_test(2),save_destination_dialog_test(1) bouwen de verwachte paden nu viap.join;import_note_l10n_test(1) geeftparseFileeenp.normalize-pad (het gemengde/+\-pad wees de analyzer af).git_cli_test: de rauwedebugSpawn('git', ['--version'])-smoke-test kreeg een leeg milieu;_spawnsluit het milieu, en Windows'CreateProcessheeft dan SystemRoot/PATHEXT/PATH nodig._smokeEnv()geeft ze op Windows mee. Het app-pad (probe(), via_hardenedEnv) slaagde al op Windows.image_service_coverage_test: hetpasteboard-pakket verwacht voorimageop Windows een bestandspad (leest+verwijdert het zelf), op macOS/Linux bytes. De mock volgt nu het contract per platform.Twee bewust overgeslagen beveiligings-tests + open vraag
git_native_cert_pin_testengit_network_guard_testbevatten elk één test die een echte lokale HTTPS-server start en er échte git tegenaan draait. Die verbinding komt op de windows-2022-runner niet tot stand (Could not connect to server after 2 ms). Ik sla die twee op Windows over mét gedocumenteerde reden, geen stille verzwakking: de guard/pin-config die wíj meegeven is op Windows al gedekt door de zustertests (die geen verbinding nodig hebben en daar groen zijn).Open beveiligingsvraag (staat in #926): of native git op Windows — schannel i.p.v. openssl/curl —
http.sslCAInfoenhttp.curloptResolvedaadwerkelijk honoreert, is hiermee niet beantwoord en vraagt een échte Windows-machine. Op macOS/Linux blijven beide eigenschappen volledig getoetst.Verificatie
make checklokaal (macOS) volledig groen: format, analyze, toolchain, conventies, privacy, methodelengte, dode code, hardgecodeerde tekst, commentaartaal, de volledige testsuite (+6767), dekkingsvloer (86,7%) en per-bestand-vloer.make check-secretsschoon (gitleaks "no leaks found", trufflehog 0 geverifieerd/ongeverifieerd) enmake sastschoon (semgrep, 0 findings, 3 regels op 792 bestanden).Bewaker
Test-only wijziging: raakt geen bestandsformaat, opslag, afhankelijkheid, uitgaand verkeer of publieke belofte. Bewaker-stap daarom bewust overgeslagen — met bovenstaande expliciete vermelding van de overgeslagen beveiligings-test en de open Windows-git-TLS-vraag, zodat die te wegen zijn.
`debugSpawn('git', ['--version'])` draaide met een leeg milieu; `_spawn` sluit het milieu (`includeParentEnvironment: false`), en op Windows heeft `CreateProcess` dan SystemRoot/PATHEXT/PATH nodig om git.exe te vinden en de systeem-DLL's te laden. Zonder die faalt de spawn met "The parameter is incorrect" — een leeg-milieu-artefact, geen echt codepad: het app-pad geeft via `_hardenedEnv` altijd die essentials mee (en de zuster-test `probe()` slaagt op Windows). `_smokeEnv()` levert ze op Windows; op POSIX blijft het milieu leeg, want daar lost de spawn de executable via het ouderpad op (#926). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>De enige twee tests die een echte lokale HTTPS-server starten en er échte git tegenaan draaien, falen op de windows-2022-CI-runner doordat de verbinding niet tot stand komt ("Could not connect to server after 2 ms"). De guard/pin-logica die wíj meegeven — de argv en omgeving — is op Windows al gedekt door de zustertests die geen verbinding nodig hebben en daar groen zijn. Bewust een gedocumenteerde skip, geen stille verzwakking: of native git op Windows (schannel i.p.v. openssl) `http.sslCAInfo` en `http.curloptResolve` honoreert, is een open beveiligingsvraag die een échte Windows-machine vraagt. Die staat als zodanig in #926; op macOS/Linux blijven beide eigenschappen volledig getoetst. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>