This page consolidates the status of the official Jakarta Servlet 6.1 TCK runs against Foy. It is regenerated on every release. The day-to-day source of truth remains the TCK.md of the foy-tck folder.

Summary

At the latest full run of the tck-official profile, roughly 90 % of Jakarta Servlet 6.1 tests on the api.* packages pass.

Spec section Total Passed Notes

api.jakarta_servlet.servlet.*

~XX

~XX

✅ Near-complete coverage. // TODO@user: exact figures from the latest run

api.jakarta_servlet.filter.*

~XX

~XX

api.jakarta_servlet.http.*

~XX

~XX

⚠️ 3 errors on HttpServletRequestTestsgetRequestedSessionId semantics + TCK substring bug

api.jakarta_servlet.dispatchtest

~XX

~XX-18

❌ ~18 errors: cross-context dispatch (ServletContext.getContext) not implemented

api.jakarta_servlet.registration

~XX

~XX-10

❌ 10 errors: CommonServlets.jar auto-attached to the WAR not scanned

api.jakarta_servlet.asynccontext

~XX

~XX-11

⚠️ ~11 errors: edge cases of setTimeout / startAsync after dispatch

Exact figures live in target/surefire-reports/ after an --all run. For historical detail, browse git log — foy-tck/ on the main branch.

Intentionally skipped tests

Test Reason

sc40.addJsp*, sc40.addJspFile*

Foy ships no JSP engine — not supported, not planned. For dynamic pages, use Cassini (REST) or pure Servlets.

TLD tests (tagext.*)

Same — no JSP engine.

// TODO@user: list any extra batteries explicitly skipped in foy-tck/TCK.md

// TODO@user

Tests skipped due to environment

These tests require a full Jakarta EE container or an external service (application JNDI, JMS, JTA). They do not represent an applicative gap of Foy.

  • Application JNDI tests (@Resource JDBC) — Foy does not ship an integrated datasource pool; the application injects them through Vauban.

  • // TODO@user: complete from foy-tck/TCK.md

Runner architecture

foy-tck is an in-reactor module gated behind the tck Maven profile (TCK harmonisation, same pattern as the vidocq-runtime-tck-* runners): a plain mvn install neither downloads nor runs anything TCK-related, and the release reactor never sees the module. Invoke through ./run-official-tck-servlet6.1.sh, or directly via ./mvnw -Ptck,tck-official -pl foy-tck test.

Historical note. The module used to be excluded from the reactor as a standalone Model 4.0.0 POM: ShrinkWrap Maven Resolver 3.3 (transitive dependency of the official Jakarta TCK) could not parse the Model 4.1.0 POMs the workspace used at the time (Bad artifact coordinates …​ jar:). That constraint disappeared with the workspace-wide migration to Maven 3.9.16 / Model 4.0.0.

Reproduce locally

Prerequisites

Install the official Jakarta Servlet 6.1 TCK artefacts (non-public) into your local M2:

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

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

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

Detailed procedure in foy-tck/README.md.

Run the TCK

cd foy
./run-official-tck-servlet6.1.sh                     # smoke test (fast)
./run-official-tck-servlet6.1.sh --all               # full suite (long)
./run-official-tck-servlet6.1.sh -Dtest=ServletTests # one class

CI integration

- 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
  # Prereq: official TCK artefacts cached in ~/.m2

Surefire reports live in foy-tck/target/surefire-reports/.