Cette page consolide l’état des tests TCK officiels Jakarta Servlet 6.1 exécutés contre Foy. Elle est régénérée à chaque release. La source de vérité au quotidien reste le TCK.md du repo lien:https://codeberg.org/Vidocq/foy/src/branch/main/foy-tck/[foy-tck].

Synthèse

Au dernier run complet du profil tck-official, environ 90 % des tests Jakarta Servlet 6.1 sur les packages api.* passent.

Section spec Total Passés Notes

api.jakarta_servlet.servlet.*

~XX

~XX

✅ Couverture quasi complète. // TODO@user: chiffres exacts depuis le dernier run

api.jakarta_servlet.filter.*

~XX

~XX

api.jakarta_servlet.http.*

~XX

~XX

⚠️ 3 erreurs sur HttpServletRequestTestsgetRequestedSessionId semantics + bug TCK substring

api.jakarta_servlet.dispatchtest

~XX

~XX-18

❌ ~18 erreurs : cross-context dispatch (ServletContext.getContext) non implémenté

api.jakarta_servlet.registration

~XX

~XX-10

❌ 10 erreurs : CommonServlets.jar auto-attaché au WAR pas scanné

api.jakarta_servlet.asynccontext

~XX

~XX-11

⚠️ ~11 erreurs : cas pointus setTimeout / startAsync après dispatch

Les chiffres précis sont dans target/surefire-reports/ après un run --all. Pour le détail historique, consulter git log — foy-tck/ sur la branche main.

Tests volontairement skippés

Test Raison

sc40.addJsp*, sc40.addJspFile*

Foy n’embarque pas de moteur JSP — non supporté, non planifié. Pour des pages dynamiques, utiliser Cassini (REST) ou des Servlets pures.

Tests TLD (tagext.*)

Idem, pas de moteur JSP.

// TODO@user: lister ici les batteries supplémentaires explicitement skippées dans foy-tck/TCK.md

// TODO@user

Tests skippés pour cause d’environnement

Ces tests requièrent un container Jakarta EE complet ou un service externe (JNDI applicatif, JMS, JTA). Ils ne représentent pas un manquement applicatif de Foy.

  • Tests JNDI applicatif (@Resource JDBC) — Foy ne fournit pas de pool de datasources intégré, l’application les injecte via Vauban.

  • // TODO@user: compléter depuis foy-tck/TCK.md

Architecture du runner

foy-tck est volontairement EXCLU du <modules> du reactor foy et utilise un POM modelVersion 4.0.0 standalone, sans <parent>.

Raison. ShrinkWrap Maven Resolver 3.3 (transitive du TCK officiel Jakarta) repose sur maven-resolver 1.9 / maven-model 3.9 qui ne savent pas parser les POMs Maven Model 4.1.0. Son ClasspathWorkspaceReader scanne le reactor courant et plante sur tout POM Vidocq (version implicite via parent) avec un message du type :

Bad artifact coordinates io.vidocq.foy:foy-core:jar:,
expected format is <groupId>:<artifactId>[:<extension>[:<classifier>]]:<version>

Tant que ShrinkWrap upstream ne supporte pas Model 4.1, foy-tck doit rester détaché :

  • ne pas le réintégrer au <modules> parent ;

  • ne pas lui ajouter de <parent> ;

  • ne pas le builder via mvn -pl ;

  • toujours passer par ./run-official-tck-servlet6.1.sh.

Cette contrainte est documentée plus largement dans lien:https://codeberg.org/Vidocq/vidocq/src/branch/main/CLAUDE.md (section TCK runners hors reactor).

Reproduire localement

Pré-requis

Installer dans le M2 local les artefacts TCK officiels Jakarta Servlet 6.1 (non-publics) :

  • jakarta.tck:servlet-tck-runtime:6.1.0

  • jakarta.tck:servlet-tck-util:6.1.0

  • jakarta.tck:servlet-tck:6.1.0 (pom)

Procédure détaillée dans lien:https://codeberg.org/Vidocq/foy/src/branch/main/foy-tck/README.md[foy-tck/README.md].

Lancer le TCK

cd foy
./run-official-tck-servlet6.1.sh                     # smoke test (rapide)
./run-official-tck-servlet6.1.sh --all               # suite complète (long)
./run-official-tck-servlet6.1.sh -Dtest=ServletTests # une classe précise

Intégration CI

- name: Build foy reactor
  run: cd foy && ./mvnw -ntp install -DskipTests

- name: Run Jakarta Servlet 6.1 TCK
  run: cd foy && ./run-official-tck-servlet6.1.sh --all
  # Pré-requis : cache des artefacts TCK officiels dans ~/.m2

Les rapports Surefire sont dans foy-tck/target/surefire-reports/.