ci: platformtestfalen terugdringen — mktemp portable, conventie-ratchet, wekelijkse Windows-run #2156

Merged
brenno merged 3 commits from fix/ci-platform-test-failures into main 2026-09-21 23:51:14 +00:00
Owner

Aanleiding

Van de laatste zes tag-runs op de GitHub-spiegel faalden er vier — niet op willekeurige flakiness maar op één bugklasse: tests en scripts die POSIX/macOS aannemen en pas op de tag voor het eerst Windows of GNU/Linux zien. De lokale poort én de Forgejo-poort draaien op macOS; de nachtelijke linux-gate dekt Linux; Windows zag de suite alleen op een v*-tag.

Tag Falende job Oorzaak
v0.6.3–v0.6.5 Test (windows-2022) expect-vergelijking '${dir.path}/file' vs p.join (\ op Windows)
v0.6.8 Gate (Linux) mktemp -t zonder X's — BSD-vorm die GNU weigert

Wat deze PR doet

  • Fixt de levende breuk: mktemp in scripts/notarize_macos.sh naar de portable padvorm — anders faalt de volgende tag gegarandeerd opnieuw op Linux.
  • Ratchet bij de bron in check_conventions (harde nullen, elk met een pure meetfunctie):
    • handJoinedPathExpectsIn: geen '${x.path}/file'-literal meer als verwachte waarde van een expect in test/ — gebruik p.join. Bewust smal: project-relatieve literals (images/photo.png) en File('${x.path}/y') in de arrange-stap zijn correct en worden niet geraakt.
    • bsdMktempIn: geen mktemp -t meer in scripts/.
    • De ene bestaande overtreding (image_carousel_add_image_test) is omgezet naar p.join.
  • Sluit het Windows-gat: nieuwe windows-test-check.yml draait flutter test wekelijks over main op windows-2022 — de Windows-tweeling van de nachtelijke linux-gate. Detectie, geen preventie: rood blokkeert niets maar noemt de test, met maximaal een week commits tussen groen en rood. Wekelijks, niet per merge — dat is al eens afgewezen (#1123) en levert hier alleen mailboxruis.
  • check_toolchain telt de flutter-version-pin van het nieuwe bestand mee; docs/CHECKS.md beschrijft de workflow.

Waarom geen bewaker-blik

De wijziging raakt geen bestandsformaat, opslag, afhankelijkheid, uitgaand verkeer of publieke belofte — het is test-/CI-instrumentatie. De stap is daarmee bewust overgeslagen.

Verificatie

  • make check groen (11.877 tests, coverage 86,8%, goldens groen)
  • make check-secrets groen, make sast 0 findings
  • Beide nieuwe regels bewezen rood te kunnen staan: een geplante overtreding in scripts/ resp. test/ laat de poort falen met de juiste regelverwijzing; test/platform_portability_ratchet_test.dart dekt de meetfuncties (12 gevallen, inclusief de vormen die níét mogen vlagen)
  • De mktemp-fix is op macOS geverifieerd groen; op GNU faalt dezelfde aanroep nu niet meer door de padvorm met X's

Generated with Devin

## Aanleiding Van de laatste zes tag-runs op de GitHub-spiegel faalden er vier — niet op willekeurige flakiness maar op één bugklasse: **tests en scripts die POSIX/macOS aannemen en pas op de tag voor het eerst Windows of GNU/Linux zien.** De lokale poort én de Forgejo-poort draaien op macOS; de nachtelijke `linux-gate` dekt Linux; Windows zag de suite alleen op een `v*`-tag. | Tag | Falende job | Oorzaak | |---|---|---| | v0.6.3–v0.6.5 | Test (windows-2022) | `expect`-vergelijking `'${dir.path}/file'` vs `p.join` (`\` op Windows) | | v0.6.8 | Gate (Linux) | `mktemp -t` zonder X's — BSD-vorm die GNU weigert | ## Wat deze PR doet - **Fixt de levende breuk**: `mktemp` in `scripts/notarize_macos.sh` naar de portable padvorm — anders faalt de volgende tag gegarandeerd opnieuw op Linux. - **Ratchet bij de bron** in `check_conventions` (harde nullen, elk met een pure meetfunctie): - `handJoinedPathExpectsIn`: geen `'${x.path}/file'`-literal meer als verwachte waarde van een `expect` in `test/` — gebruik `p.join`. Bewust smal: project-relatieve literals (`images/photo.png`) en `File('${x.path}/y')` in de arrange-stap zijn correct en worden niet geraakt. - `bsdMktempIn`: geen `mktemp -t` meer in `scripts/`. - De ene bestaande overtreding (`image_carousel_add_image_test`) is omgezet naar `p.join`. - **Sluit het Windows-gat**: nieuwe `windows-test-check.yml` draait `flutter test` wekelijks over `main` op `windows-2022` — de Windows-tweeling van de nachtelijke `linux-gate`. Detectie, geen preventie: rood blokkeert niets maar noemt de test, met maximaal een week commits tussen groen en rood. Wekelijks, niet per merge — dat is al eens afgewezen (#1123) en levert hier alleen mailboxruis. - `check_toolchain` telt de `flutter-version`-pin van het nieuwe bestand mee; `docs/CHECKS.md` beschrijft de workflow. ## Waarom geen bewaker-blik De wijziging raakt geen bestandsformaat, opslag, afhankelijkheid, uitgaand verkeer of publieke belofte — het is test-/CI-instrumentatie. De stap is daarmee bewust overgeslagen. ## Verificatie - `make check` groen (11.877 tests, coverage 86,8%, goldens groen) - `make check-secrets` groen, `make sast` 0 findings - Beide nieuwe regels bewezen rood te kunnen staan: een geplante overtreding in `scripts/` resp. `test/` laat de poort falen met de juiste regelverwijzing; `test/platform_portability_ratchet_test.dart` dekt de meetfuncties (12 gevallen, inclusief de vormen die níét mogen vlagen) - De mktemp-fix is op macOS geverifieerd groen; op GNU faalt dezelfde aanroep nu niet meer door de padvorm met X's Generated with [Devin](https://devin.ai)
brenno force-pushed fix/ci-platform-test-failures from 44cf1c92a9
All checks were successful
scans / scans (pull_request) Successful in 3m6s
static-gate / static-gate (pull_request) Successful in 6m27s
to bfdae18682
All checks were successful
scans / scans (pull_request) Successful in 3m4s
static-gate / static-gate (pull_request) Successful in 6m26s
2026-09-21 23:44:15 +00:00
Compare
brenno merged commit 00c7c7891e into main 2026-09-21 23:51:14 +00:00
Sign in to join this conversation.
No description provided.