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 |
|---|---|---|---|
|
~XX |
~XX |
✅ Couverture quasi complète. |
|
~XX |
~XX |
✅ |
|
~XX |
~XX |
⚠️ 3 erreurs sur |
|
~XX |
~XX-18 |
❌ ~18 erreurs : cross-context dispatch ( |
|
~XX |
~XX-10 |
❌ 10 erreurs : |
|
~XX |
~XX-11 |
⚠️ ~11 erreurs : cas pointus |
|
Les chiffres précis sont dans |
Tests volontairement skippés
| Test | Raison |
|---|---|
|
Foy n’embarque pas de moteur JSP — non supporté, non planifié. Pour des pages dynamiques, utiliser Cassini (REST) ou des Servlets pures. |
Tests TLD ( |
Idem, pas de moteur JSP. |
|
|
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 (
@ResourceJDBC) — 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/.