ci(privacy): de beeldtests draaiden nergens echt #364

Merged
brenno merged 1 commit from ci/dartcv-lib-path into main 2026-07-19 15:51:46 +00:00
Owner

Vervolg op #363, dat de beeldcontrole introduceerde. De detectietests daarvan sloegen zichzelf overal over — lokaal én in CI — en stonden dus groen zonder iets te bewaken.

Waarom

De beeldcontrole draait op OpenCV via FFI, en die native bibliotheek zit in de app-bundel. Een kale flutter test op de Dart-VM heeft haar niet.

Dat is geen theoretisch risico. Tijdens het bouwen van de feature stonden precies deze tests één keer groen terwijl de bibliotheek niet laadde: elke aanroep viel in de foutafhandeling en de scanner meldde nul gezichten. Groen om de verkeerde reden is erger dan rood, en dat is nu net het gedrag waar deze hele controle tegen ontworpen is.

Wat er verandert

Makefile — zoekt de bibliotheek zelf op in build/ en exporteert DARTCV_LIB_PATH. Wie ooit een platformbuild heeft gedaan, draait de detectietests dus vanzelf echt; niemand hoeft een variabele te onthouden. Gezocht op bestandsnaam en niet op een vast pad, want dat verschilt per platform (framework / .so / .dll) én per bouwmodus.

CI — alleen de macOS-taak bouwt. Eén platform waar ze werkelijk draaien volstaat om een regressie in de detector te vangen, en een Linux-build zou GTK-pakketten op de runner vragen voor dezelfde twee tests. Die stap faalt hard als de bibliotheek niet staat waar hij wordt verwacht — anders valt een toekomstige opencv_core met een gewijzigd pad stilletjes terug op overslaan, en zijn we terug bij het probleem dat deze PR oplost.

CHECKS.md — beschrijft dat deze ene suite een platformbuild nodig heeft, en waarom.

Gemeten

flutter test test/image_face_scan_test.dart
  zonder:  +7 ~2   (twee overgeslagen)
  met:     +9      (alles draait)

De regeldekking van de volledige suite stijgt mee, van 35.940 naar 35.980 regels. make check groen.

Kosten

De macOS-taak krijgt er een debug-build bij, lokaal ongeveer vier minuten. Dat is de prijs voor twee tests die de precisie van een gezichtsdetector bewaken — een detector die op elke huisdierfoto zou aanslaan als hij stukging, zonder dat iemand het merkte.

🤖 Generated with Claude Code

Vervolg op #363, dat de beeldcontrole introduceerde. De detectietests daarvan sloegen zichzelf **overal** over — lokaal én in CI — en stonden dus groen zonder iets te bewaken. ## Waarom De beeldcontrole draait op OpenCV via FFI, en die native bibliotheek zit in de app-bundel. Een kale `flutter test` op de Dart-VM heeft haar niet. Dat is geen theoretisch risico. Tijdens het bouwen van de feature stonden precies deze tests één keer groen terwijl de bibliotheek niet laadde: elke aanroep viel in de foutafhandeling en de scanner meldde nul gezichten. Groen om de verkeerde reden is erger dan rood, en dat is nu net het gedrag waar deze hele controle tegen ontworpen is. ## Wat er verandert **Makefile** — zoekt de bibliotheek zelf op in `build/` en exporteert `DARTCV_LIB_PATH`. Wie ooit een platformbuild heeft gedaan, draait de detectietests dus vanzelf echt; niemand hoeft een variabele te onthouden. Gezocht op bestandsnaam en niet op een vast pad, want dat verschilt per platform (framework / `.so` / `.dll`) én per bouwmodus. **CI** — alleen de macOS-taak bouwt. Eén platform waar ze werkelijk draaien volstaat om een regressie in de detector te vangen, en een Linux-build zou GTK-pakketten op de runner vragen voor dezelfde twee tests. Die stap **faalt hard** als de bibliotheek niet staat waar hij wordt verwacht — anders valt een toekomstige `opencv_core` met een gewijzigd pad stilletjes terug op overslaan, en zijn we terug bij het probleem dat deze PR oplost. **CHECKS.md** — beschrijft dat deze ene suite een platformbuild nodig heeft, en waarom. ## Gemeten ``` flutter test test/image_face_scan_test.dart zonder: +7 ~2 (twee overgeslagen) met: +9 (alles draait) ``` De regeldekking van de volledige suite stijgt mee, van 35.940 naar 35.980 regels. `make check` groen. ## Kosten De macOS-taak krijgt er een debug-build bij, lokaal ongeveer vier minuten. Dat is de prijs voor twee tests die de precisie van een gezichtsdetector bewaken — een detector die op elke huisdierfoto zou aanslaan als hij stukging, zonder dat iemand het merkte. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
ci(privacy): de beeldtests draaiden nergens echt
Some checks failed
CI / Gate (Linux) · Format · Analyze · Coverage (push) Has been cancelled
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
CI / Web hardening (push) Has been cancelled
CI / Docs links (push) Has been cancelled
CI / Supply-chain (Trivy · advisory) (push) Has been cancelled
CI / Gate (Linux) · Format · Analyze · Coverage (pull_request) Has been cancelled
CI / Test (macos-latest) (pull_request) Has been cancelled
CI / Test (windows-latest) (pull_request) Has been cancelled
CI / Web hardening (pull_request) Has been cancelled
CI / Docs links (pull_request) Has been cancelled
CI / Supply-chain (Trivy · advisory) (pull_request) Has been cancelled
f90453d56d
De detectietests voor de beeldcontrole sloegen zichzelf overal over — lokaal
én in CI. Ze stonden groen zonder iets te bewaken.

De oorzaak is structureel: die controle draait op OpenCV via FFI, en de
native bibliotheek zit in de app-bundel. Een kale `flutter test` op de
Dart-VM heeft haar niet. En dat is geen theoretisch risico: tijdens de bouw
van deze feature stonden die tests één keer groen terwijl de bibliotheek
niet laadde, elke aanroep in de foutafhandeling viel en de scanner nul
gezichten meldde. Groen om de verkeerde reden is erger dan rood.

`dartcv` leest het pad uit DARTCV_LIB_PATH. In plaats van iedereen die
variabele te laten onthouden, zoekt de Makefile de bibliotheek nu zelf op in
`build/` en zet hem. Wie ooit een platformbuild heeft gedaan, draait de
detectietests dus vanzelf echt. Gezocht op bestandsnaam en niet op een vast
pad, want dat verschilt per platform (framework, `.so`, `.dll`) én per
bouwmodus.

In CI bouwt alleen de macOS-taak. Eén platform waar ze werkelijk draaien
volstaat om een regressie in de detector te vangen, en een Linux-build zou
GTK-pakketten op de runner vragen voor dezelfde twee tests. Die stap faalt
hard als de bibliotheek niet staat waar hij wordt verwacht — anders valt een
toekomstige opencv_core met een ander pad stilletjes terug op overslaan, en
zijn we terug bij het probleem dat deze commit oplost.

Meetbaar: `flutter test test/image_face_scan_test.dart` gaf `+7 ~2`
(twee overgeslagen) en geeft nu `+9`. De regeldekking van de suite stijgt
mee, van 35.940 naar 35.980.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brenno merged commit 300a37bc86 into main 2026-07-19 15:51:46 +00:00
Sign in to join this conversation.
No description provided.