Un paquet de conformité qui ne joue AUCUN contrôle affiche ✓ : telemetry et http verts en 0 ms #108

Closed
opened 2026-10-01 13:56:43 +00:00 by nicolas-fryder · 0 comments

Ce qui se passe

Premier passage de runConformance sur nuage, profil nest :

✓ conformité @eqs (profil nest) > platform   112ms
✓ conformité @eqs (profil nest) > errors      13ms
✓ conformité @eqs (profil nest) > auth         7ms
✓ conformité @eqs (profil nest) > telemetry    0ms   ← n'a rien joué
✓ conformité @eqs (profil nest) > http         0ms   ← n'a rien joué
✓ conformité @eqs (profil nest) > config    1014ms

Six verts. On en conclut — j'en ai conclu — que six paquets sont éprouvés.

C'est faux. Le contrôle d'ensemble, « chaque règle annoncée a été jouée », compte 27 règles annoncées et jamais jouées, dont les sept de telemetry et celles de http. Ces deux paquets ont affiché ✓ sans évaluer une seule règle, parce que leur contexte n'était pas fourni.

Le commentaire du contrôle d'ensemble dit exactement pourquoi il existe :

Journal vide = harnais muet, et pas suite vide. On le déclare NON EXÉCUTABLE au lieu d'y lire une couverture parfaite : prendre le silence pour un succès est exactement le piège qu'on referme ici.

Le piège est bien refermé au niveau de l'ensemble. Il reste grand ouvert au niveau de chaque paquet, qui est ce qu'on lit d'abord.

Pourquoi ça compte

C'est la lecture par défaut. On lance la suite, on voit six ✓, on passe à autre chose. Sans le dernier contrôle, nuage aurait considéré telemetry et http comme conformes alors qu'aucune de leurs règles n'avait tourné — et c'est précisément le genre de vert qui coûte cher plus tard, parce qu'on cesse de regarder.

Et le dernier contrôle est facile à perdre de vue : il est seul, il vient en dernier, et son message est long.

Proposition

Faire dire au titre de chaque paquet ce qu'il a joué :

✓ telemetry — 0/7 règles jouées (contexte absent)
✓ http      — 0/4 règles jouées (contexte absent)
✓ platform  — 12/15 règles jouées

Le compte existe déjà : executionsNotees() l'a. Il suffit de l'afficher là où on le lit. Un paquet à 0/n pourrait même se déclarer skip plutôt que pass — un test sauté se voit, un test vert ne se revoit jamais.

Accessoirement : trois règles jouées mais non notées

testing.check-budget, testing.base-detruite et testing.fichier-orphelin apparaissent dans les 27 « jamais jouées », alors que les tests correspondants (checkBudget, baseDetruite, fichierOrphelin) sont verts. Ils tournent donc sans passer par executerEtNoter, ou en notant sous un autre nom.

C'est l'inverse du défaut ci-dessus — un faux négatif cette fois — et il oblige à dispenser trois règles qui sont en fait vérifiées.

Trouvé en rétrofittant nuage, socle 0.14.0, @eqs/testing@0.14.0.

## Ce qui se passe Premier passage de `runConformance` sur nuage, profil `nest` : ``` ✓ conformité @eqs (profil nest) > platform 112ms ✓ conformité @eqs (profil nest) > errors 13ms ✓ conformité @eqs (profil nest) > auth 7ms ✓ conformité @eqs (profil nest) > telemetry 0ms ← n'a rien joué ✓ conformité @eqs (profil nest) > http 0ms ← n'a rien joué ✓ conformité @eqs (profil nest) > config 1014ms ``` Six verts. On en conclut — j'en ai conclu — que six paquets sont éprouvés. C'est faux. Le contrôle d'ensemble, « chaque règle annoncée a été jouée », compte **27 règles annoncées et jamais jouées**, dont les **sept** de `telemetry` et celles de `http`. Ces deux paquets ont affiché ✓ sans évaluer une seule règle, parce que leur contexte n'était pas fourni. Le commentaire du contrôle d'ensemble dit exactement pourquoi il existe : > Journal vide = harnais muet, et pas suite vide. On le déclare NON EXÉCUTABLE au lieu d'y lire une couverture parfaite : prendre le silence pour un succès est exactement le piège qu'on referme ici. Le piège est bien refermé **au niveau de l'ensemble**. Il reste grand ouvert au niveau de chaque paquet, qui est ce qu'on lit d'abord. ## Pourquoi ça compte C'est la lecture par défaut. On lance la suite, on voit six ✓, on passe à autre chose. Sans le dernier contrôle, nuage aurait considéré `telemetry` et `http` comme conformes alors qu'aucune de leurs règles n'avait tourné — et c'est précisément le genre de vert qui coûte cher plus tard, parce qu'on cesse de regarder. Et le dernier contrôle est facile à perdre de vue : il est seul, il vient en dernier, et son message est long. ## Proposition Faire dire au titre de chaque paquet ce qu'il a joué : ``` ✓ telemetry — 0/7 règles jouées (contexte absent) ✓ http — 0/4 règles jouées (contexte absent) ✓ platform — 12/15 règles jouées ``` Le compte existe déjà : `executionsNotees()` l'a. Il suffit de l'afficher là où on le lit. Un paquet à 0/n pourrait même se déclarer `skip` plutôt que `pass` — un test sauté se voit, un test vert ne se revoit jamais. ## Accessoirement : trois règles jouées mais non notées `testing.check-budget`, `testing.base-detruite` et `testing.fichier-orphelin` apparaissent dans les 27 « jamais jouées », alors que les tests correspondants (`checkBudget`, `baseDetruite`, `fichierOrphelin`) sont **verts**. Ils tournent donc sans passer par `executerEtNoter`, ou en notant sous un autre nom. C'est l'inverse du défaut ci-dessus — un faux négatif cette fois — et il oblige à dispenser trois règles qui sont en fait vérifiées. Trouvé en rétrofittant nuage, socle 0.14.0, `@eqs/testing@0.14.0`.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Infrastructure/eqs-platform#108
No description provided.