This is an automated email from the ASF dual-hosted git repository.

jungm pushed a commit to branch ee11
in repository https://gitbox.apache.org/repos/asf/tomee-tck.git

commit 7ae24ba31dd6a94a7125cf4133228c584d29044e
Author: Markus Jung <[email protected]>
AuthorDate: Sun Jul 19 00:02:51 2026 +0200

    Run the Faces TCK modern modules on Plume and retriage exclusions
    
    Move the tomee-remote container configuration into the failsafe execution
    where the TCK runs every IT: a surefire-only block never reached the
    integration-test fork, so the adapter fell back to its defaults and the
    suite ran against the webprofile distribution (MyFaces) instead of Plume
    (Mojarra). Stage ShrinkWrap API 1.2.6 through tomee.additionalLibs so the
    faces40/41 WARs' bundled util deployment scans cleanly under OpenWebBeans.
    
    Rederive exclusions/faces.txt from the clean Plume/Mojarra baseline: the
    faces-config https xsi:schemaLocation gap affects one class (Spec1760IT),
    not three; the rest are Mojarra/TomEE integration behaviors (Faces CDI
    implicit-object injection, whole-bean and CDI method validation, one
    Chrome ajax quirk).
---
 KNOWN_ISSUES.md                                    |  39 ++++-
 runner-standalone/README.md                        |   2 +-
 runner-standalone/exclusions/faces.txt             | 158 +++++++--------------
 .../src/test/resources/tomee-remote-profile.xml    |  21 ++-
 4 files changed, 107 insertions(+), 113 deletions(-)

diff --git a/KNOWN_ISSUES.md b/KNOWN_ISSUES.md
index ef31bff..e8914c5 100644
--- a/KNOWN_ISSUES.md
+++ b/KNOWN_ISSUES.md
@@ -40,7 +40,7 @@ Detail lives next to each runner:
 | security | 132 tests, 5 F + 2 E; signature test passes | 7 tests | TomEE 
Jakarta Security |
 | authentication | 106 tests, 1 F; signature test passes | 1 method (spi 
`CheckMsgInfoKey`) | TCK challenge #219 (hard-codes a JACC requirement) |
 | websocket | 737 tests, 3 E | 3 methods | Client container advertises 
permessage-deflate in the negotiated extension lists |
-| faces (modern modules) | 263 tests on record, 9 F + 30 E | 39 tests | TomEE 
faces-config parsing + Mojarra integration |
+| faces (modern modules) | 327 tests, 45 F + 6 E (failsafe reruns inflate the 
counts; 10 distinct failing classes) | 10 classes | 1 TomEE faces-config gap + 
Mojarra/TomEE CDI-injection, whole-bean/method validation, and one Chrome ajax 
quirk |
 | faces-old (JavaTest) | 5,391 tests, all pass (recorded run: 5 F from a 
foreign server answering :8080 mid-run; pass on re-run) | — | — (standalone 
mode, no exclusions) |
 | faces-signaturetest | passes against Plume's Mojarra 
(org.glassfish:jakarta.faces 4.1.9) | — | — |
 
@@ -76,10 +76,35 @@ Fixes belong in Apache TomEE (or Tomcat); each removes 
exclusion entries.
    conduit's no-entity handling, tracked upstream as
    [CXF-9039](https://issues.apache.org/jira/browse/CXF-9039), otherwise
    fails the `getLength()`/`hasEntity()` assertions.
-5. **Faces descriptor parsing** — TomEE's `faces-config.xml` unmarshaller
-   rejects the `xsi:schemaLocation` attribute that Faces 4.1 descriptors
-   carry, so affected applications never deploy. Dominant cause of the 31
-   class exclusions in [faces.txt](runner-standalone/exclusions/faces.txt).
+5. **Faces (Mojarra on TomEE)** — five distinct integration behaviors, all in
+   [faces.txt](runner-standalone/exclusions/faces.txt):
+   - *faces-config parsing (product gap):* TomEE's `faces-config.xml`
+     unmarshaller (`ReadDescriptors.readFacesConfig`) rejects the unexpected
+     `{https://www.w3.org/2001/XMLSchema-instance}schemaLocation` attribute the
+     Faces 4.1 descriptors declare on the nonstandard *https* XSI namespace, so
+     the deployment fails to unmarshall. Only descriptors with child content
+     hit the strict path: `faces41/headAndBodyRenderer/Spec1760IT` (its
+     `faces-config.xml` carries a `<faces-config-extension>`) is the single
+     class affected — the sibling `uiRepeat/Spec1263IT` and
+     `uuidConverter/Spec1819IT` modules carry the same https namespace on an
+     empty `<faces-config>` and deploy and pass. A TomEE fix and/or TCK
+     challenge candidate.
+   - *Faces CDI implicit-object injection:* `@Inject` with a Faces qualifier
+     (`@RequestCookieMap`/`@SessionMap`/`@ViewMap`) yields a `Map` that renders
+     non-empty where the TCK asserts the page contains `{}` — Mojarra's
+     implicit-object CDI producers do not resolve to the empty map under
+     OpenWebBeans (`Issue3729IT`/`Issue3730IT`/`Issue3731IT`,
+     `Spec1582RequestCookieMap2IT`/`Spec1582ViewMap2IT`).
+   - *Whole-bean / cross-field validation:* `<f:validateWholeBean>` does not
+     emit the expected "Password fields must match" message
+     (`multiFieldValidation/Spec1IT`, `validateWholeBean/Issue4083IT`).
+   - *CDI method-level validation:* a `@FooConstraint` method constraint does
+     not surface its violation message on the rendered page under TomEE's
+     BVal/OpenWebBeans method-validation integration (`MethodValidationIT`).
+   - *Mojarra ajax re-init under Chrome:* the ajax response re-executes an
+     inline "Init called" script a different number of times than expected; the
+     TCK source itself notes this appears under Chrome and passes under 
HtmlUnit
+     (`Issue2162IT`).
 6. **Jakarta Security** — the BASIC mechanism answers 401 for valid
    credentials in the decorated/custom-handler variants, and both OpenID
    default modules fail token validation.
@@ -193,6 +218,10 @@ Not product bugs — gaps in this repository's coverage.
   `run-standalone-suite.sh`; it joins the Jenkins branch list once its
   baseline and exclusion wiring have a verified green run. The `faces-old`
   JavaTest half runs in CI.
+- **Faces `old-tck-selenium` module uncovered**: the extracted TCK reactor
+  ships an `old-tck-selenium` module (22 tests) that neither the `faces`
+  runner (which drives faces22/23/40/41 + faces-signaturetest) nor the
+  `faces-old` JavaTest runner executes; wire it into one of them.
 
 ## What CI runs
 
diff --git a/runner-standalone/README.md b/runner-standalone/README.md
index 40b898e..320471a 100644
--- a/runner-standalone/README.md
+++ b/runner-standalone/README.md
@@ -60,7 +60,7 @@ derived from; with the default exclusions applied these 
suites run green.
 | WebSocket 2.2 | EFTL zip (installed as 
`jakarta.tck:websocket-tck-spec-tests:2.2.0`) | `websocket` | **Runs: 737 
tests, 0 failures, 3 errors** (2026-07-18) against Tomcat's WebSocket 
implementation, driven through the `tomcat-websocket` client container; the 
signature test passes. The negative-deployment classes run and pass: an invalid 
server endpoint aborts the whole webapp deployment as the spec requires, and 
the runner's Arquillian extension (`NegativeDeploymentToleranceObserver`)  [...]
 | Security 4.0 | Source reactor zip 4.0.1 | `security` (Maven module) | 
**Runs: 26 app modules plus the signature test, 132 tests, 5 failures, 2 errors 
at baseline; green with the reviewed exclusions (all 27 invoker projects pass, 
verified end-to-end 2026-07-18)**. The runner downloads and patches the 
reactor, injects a tomee-remote profile (including the 
`trustStore.path`/`trustStore.password` properties the OpenID modules' keytool 
steps read), and drives every module through the Maven  [...]
 | Authentication 3.1 | Source reactor zip 3.1.2 | `authentication` (Maven 
module) | **Runs: 12 Web Profile modules plus the signature test; green with 
the reviewed exclusions (all 13 invoker projects pass, 0 failures, verified 
end-to-end 2026-07-18)**. The spi module registers the TCK's test 
`AuthConfigProvider` under Tomcat's JASPIC app-context naming 
(`Catalina/localhost /spitests_servlet_web`), so `ServletProfileSPITest` runs 
against Tomcat's `AuthConfigFactory` and passes 56 of its 5 [...]
-| Faces 4.1 | Source reactor zip 4.1.2 | `faces` (Maven module) | **Runs: 
modern Arquillian modules — 263 tests on record, 9 failures + 30 errors** 
(2026-07-18) on Plume's Mojarra. The dominant product finding: TomEE's 
faces-config.xml unmarshaller rejects the `xsi:schemaLocation` attribute used 
by Faces 4.1 descriptors, failing those deployments (the 31 class exclusions in 
`exclusions/faces.txt`). The `faces-signaturetest` module runs in the same 
invoker pass and passes against the Moja [...]
+| Faces 4.1 | Source reactor zip 4.1.2 | `faces` (Maven module) | **Runs: 
modern Arquillian modules (faces22/23/40/41) — 327 tests, 45 failures + 6 
errors** (2026-07-18) on Plume's Mojarra; the failsafe rerun mechanism inflates 
those totals, covering 10 distinct failing classes, all in 
`exclusions/faces.txt`. One is a TomEE product gap (faces-config.xml 
unmarshaller rejecting the nonstandard *https* `xsi:schemaLocation`, 
`Spec1760IT`); the rest are Mojarra/TomEE integration behaviors — F [...]
 | Faces 4.1 (legacy old-tck) | Source reactor zip 4.1.2 (old-tck built from 
bundled sources) | `faces-old` (Maven module) | **Passes 5,391/5,391 
(standalone mode, no exclusions)** (2026-07-18). The recorded full run shows 5 
failures in `htmloutcometargetbutton`, all from a foreign server answering port 
8080 mid-run; they pass on re-run against TomEE. The JavaTest half deploys 
through the TCK's own `tomcat` handler (WAR copy into `webapps/`) against a 
TomEE instance the runner provisions  [...]
 | JSON Processing 2.1 | `jakarta.json:jakarta.json-tck-*:2.1.1` (Maven 
Central; byte-identical to the EFTL zip pinned in `environment/versions.env`) | 
`jsonp` | **Passes 197/197** (2026-07-18) against Apache Johnzon 2.1.0, the 
JSON-P provider bundled in the TomEE Plume snapshot: 179 functional + signature 
tests and 18 pluggability tests. The signature test checks the `jakarta.json` 
packages of the distribution's `jakartaee-api` jar |
 | JSON Binding 3.0 | `jakarta.json.bind:jakarta.json.bind-tck:3.0.0` (Maven 
Central; byte-identical to the EFTL zip pinned in `environment/versions.env`) | 
`jsonb` | **Runs: 295 tests, 1 failure, 1 error, 5 skipped** against Apache 
Johnzon 2.1.0 with OpenWebBeans as the CDI SE container (the runner boots it 
because the TCK's own private `@BeforeAll` bootstrap is ignored by JUnit). The 
runner sets 
`johnzon.use-bigdecimal-stringadapter=false`/`johnzon.use-biginteger-stringadapter=false`
 (J [...]
diff --git a/runner-standalone/exclusions/faces.txt 
b/runner-standalone/exclusions/faces.txt
index 7dbeccb..54efc8d 100644
--- a/runner-standalone/exclusions/faces.txt
+++ b/runner-standalone/exclusions/faces.txt
@@ -1,121 +1,67 @@
 # Jakarta Faces 4.1 TCK source reactor (4.1.2), modern Arquillian modules
-# (faces22/23/40/41) on Mojarra / TomEE Plume snapshot, Java 21, 2026-07-18:
-# 263 tests on record, 9 failures, 30 errors, 5 skipped. The dominant product
-# finding: TomEE's faces-config.xml unmarshaller rejects the
-# xsi:schemaLocation attribute used by Faces 4.1 descriptors, so the affected
-# applications never deploy and their tests error out. The rest are CDI
-# integration and component behavior differences to triage. The legacy
-# JavaTest old-tck half and the signature module are not yet ported and are
-# not covered by this file.
+# (faces22/23/40/41 + faces-signaturetest) on TomEE Plume's Mojarra, Java 21,
+# 2026-07-18. Full baseline without this file: 327 tests, 45 failures + 6
+# errors, 5 skipped (the failsafe rerun mechanism counts each retried method
+# up to five times, so these totals cover 10 distinct failing test classes).
+# The excluded work splits into one TomEE product gap and four Mojarra/TomEE
+# integration behaviors:
+#   - faces-config xsi:schemaLocation on the nonstandard https XSI namespace:
+#     1 class (Spec1760IT) whose faces-config carries child elements.
+#   - Faces CDI implicit-object injection (@Inject @RequestCookieMap /
+#     @SessionMap / @ViewMap Map): 5 classes.
+#   - Faces whole-bean / cross-field validation (<f:validateWholeBean>): 2
+#     classes.
+#   - CDI method-level bean validation rendering: 1 class.
+#   - Mojarra ajax re-init under Chrome (flagged in the TCK source itself): 1
+#     class.
+# The signature test and the rest of the reactor pass. The legacy JavaTest
+# old-tck half lives in runner-standalone-faces-old and is not covered here.
 #
 # Format: maven-surefire/failsafe excludesFile patterns; the runner passes
 # this file to every TCK module through the invoker as
 # -Dsurefire.excludesFile/-Dfailsafe.excludesFile.
 
-# Spec1581IT: 1 failing
-**/ee/jakarta/tck/faces/test/faces40/javapages/Spec1581IT.java
-
-# Spec1581IT: 1 failing
-**/ee/jakarta/tck/faces/test/faces40/javapagewithmetadata/Spec1581IT.java
-
-# MethodValidationIT: 2 of 3 executed methods fail
-**/ee/jakarta/tck/faces/test/javaee7/cdimethodvalidation/cdimethodvalidation/MethodValidationIT.java#testCorrectUsage2
-**/ee/jakarta/tck/faces/test/javaee7/cdimethodvalidation/cdimethodvalidation/MethodValidationIT.java#testIncorrectUsage
-
-# Spec1IT: 1 of 5 executed methods fail
-**/ee/jakarta/tck/faces/test/javaee7/multiFieldValidation/Spec1IT.java#testSimpleValidFieldsInvalidBean
+# --- TomEE product gap: strict faces-config parsing ---
+# TomEE's ReadDescriptors.readFacesConfig (sxc/JAXB) rejects the unexpected
+# {https://www.w3.org/2001/XMLSchema-instance}schemaLocation attribute the
+# Faces 4.1 descriptors declare on the nonstandard https XSI namespace, so the
+# deployment fails to unmarshall its WEB-INF/faces-config.xml. Only descriptors
+# with child content hit the strict path: the sibling uiRepeat/Spec1263IT and
+# uuidConverter/Spec1819IT modules carry the same https namespace on an empty
+# <faces-config> and deploy and pass. Spec1760IT is the one class whose
+# faces-config has a <faces-config-extension> child.
+**/org/eclipse/ee4j/tck/faces/faces41/headAndBodyRenderer/Spec1760IT.java
 
-# Issue3729IT: 1 failing
+# --- Faces CDI implicit-object injection ---
+# @Inject with a Faces CDI qualifier (@RequestCookieMap / @SessionMap /
+# @ViewMap) produces a Map that renders as a non-empty string where the TCK
+# asserts the rendered page contains "{}"; Mojarra's implicit-object CDI
+# producers do not resolve to the empty map the test expects under TomEE's
+# OpenWebBeans.
 **/ee/jakarta/tck/faces/test/javaee8/cdi/Issue3729IT.java
-
-# Issue3730IT: 1 failing
 **/ee/jakarta/tck/faces/test/javaee8/cdi/Issue3730IT.java
-
-# Issue3731IT: 1 failing
 **/ee/jakarta/tck/faces/test/javaee8/cdi/Issue3731IT.java
-
-# Spec1582ApplicationMap2IT: 1 failing
-**/ee/jakarta/tck/faces/test/javaee8/cdi/Spec1582ApplicationMap2IT.java
-
-# Spec1582HeaderMapIT: 1 failing
-**/ee/jakarta/tck/faces/test/javaee8/cdi/Spec1582HeaderMapIT.java
-
-# Spec1582HeaderValuesMapIT: 1 failing
-**/ee/jakarta/tck/faces/test/javaee8/cdi/Spec1582HeaderValuesMapIT.java
-
-# Spec1582InitParameterMapIT: 1 failing
-**/ee/jakarta/tck/faces/test/javaee8/cdi/Spec1582InitParameterMapIT.java
-
-# Spec1582RequestCookieMap2IT: 1 failing
 **/ee/jakarta/tck/faces/test/javaee8/cdi/Spec1582RequestCookieMap2IT.java
-
-# Spec1582RequestMapIT: 1 failing
-**/ee/jakarta/tck/faces/test/javaee8/cdi/Spec1582RequestMapIT.java
-
-# Spec1582RequestParameterMapIT: 1 failing
-**/ee/jakarta/tck/faces/test/javaee8/cdi/Spec1582RequestParameterMapIT.java
-
-# Spec1582RequestParametersValuesMapIT: 1 failing
-**/ee/jakarta/tck/faces/test/javaee8/cdi/Spec1582RequestParametersValuesMapIT.java
-
-# Spec1582ViewMap2IT: 1 failing
 **/ee/jakarta/tck/faces/test/javaee8/cdi/Spec1582ViewMap2IT.java
 
-# Spec1337IT: 1 of 3 executed methods fail
-**/ee/jakarta/tck/faces/test/servlet40/el/Spec1337IT.java#testResourceEL3
-
-# Spec1260IT: 3 of 6 executed methods fail
-**/ee/jakarta/tck/faces/test/servlet40/exactmapping_selenium/Spec1260IT.java#testLinkToNonExactMappedView
-**/ee/jakarta/tck/faces/test/servlet40/exactmapping_selenium/Spec1260IT.java#testPostBackOnLinkedNonExactMappedView
-**/ee/jakarta/tck/faces/test/servlet40/exactmapping_selenium/Spec1260IT.java#testResourceReferenceFromExactMappedView
-
-# Issue5032IT: 2 failing
-**/ee/jakarta/tck/faces/test/servlet50/ajax_selenium/Issue5032IT.java
-
-# Issue5415IT: 1 failing
-**/ee/jakarta/tck/faces/test/servlet50/ajax_selenium/Issue5415IT.java
-
-# Spec1567IT: 1 failing
-**/ee/jakarta/tck/faces/test/servlet50/ajax_selenium/Spec1567IT.java
-
-# Issue5171IT: 1 failing
-**/ee/jakarta/tck/faces/test/servlet50/beanValidation/Issue5171IT.java
-
-# Spec1568IT: 1 failing
-**/ee/jakarta/tck/faces/test/servlet50/doctype/Spec1568IT.java
-
-# Spec1556IT: 1 failing
-**/ee/jakarta/tck/faces/test/servlet50/inputfile/Spec1556IT.java
-
-# Spec1555IT: 1 failing
-**/ee/jakarta/tck/faces/test/servlet50/inputfile_selenium/Spec1555IT.java
-
-# Spec1560IT: 1 failing
-**/ee/jakarta/tck/faces/test/servlet50/inputtext/Spec1560IT.java
-
-# Spec1553IT: 1 failing
-**/ee/jakarta/tck/faces/test/servlet50/namespaces/Spec1553IT.java
-
-# Spec1565IT: 1 failing
-**/ee/jakarta/tck/faces/test/servlet50/resources/Spec1565IT.java
-
-# Spec1563IT: 1 failing
-**/ee/jakarta/tck/faces/test/servlet50/selectitemgroup/Spec1563IT.java
-
-# Spec1559IT: 1 failing
-**/ee/jakarta/tck/faces/test/servlet50/selectitemgroups/Spec1559IT.java
-
-# Spec1574IT: 1 failing
-**/ee/jakarta/tck/faces/test/servlet50/selectmanycheckbox/Spec1574IT.java
-
-# Spec1760IT: 1 failing
-**/org/eclipse/ee4j/tck/faces/faces41/headAndBodyRenderer/Spec1760IT.java
-
-# Spec1263IT: 1 failing
-**/org/eclipse/ee4j/tck/faces/faces41/uiRepeat/Spec1263IT.java
+# --- Faces whole-bean / cross-field validation ---
+# <f:validateWholeBean> copies the bean and cross-validates two fields
+# (matching passwords). TomEE does not emit the expected "Password fields must
+# match" validation message, so multiFieldValidation/Spec1IT's assertion fails
+# and validateWholeBean/Issue4083IT errors reading the missing message element.
+**/ee/jakarta/tck/faces/test/javaee7/multiFieldValidation/Spec1IT.java#testSimpleValidFieldsInvalidBean
+**/ee/jakarta/tck/faces/test/javaee8/validateWholeBean/Issue4083IT.java
 
-# Spec1819IT: 1 failing
-**/org/eclipse/ee4j/tck/faces/faces41/uuidConverter/Spec1819IT.java
+# --- CDI method-level bean validation ---
+# A @FooConstraint method-validation constraint on a managed-bean method does
+# not surface its violation message on the rendered page under TomEE's
+# BVal/OpenWebBeans method-validation integration (the GlassFish reference
+# runtime uses Hibernate Validator/Weld).
+**/ee/jakarta/tck/faces/test/javaee7/cdimethodvalidation/cdimethodvalidation/MethodValidationIT.java#testCorrectUsage2
+**/ee/jakarta/tck/faces/test/javaee7/cdimethodvalidation/cdimethodvalidation/MethodValidationIT.java#testIncorrectUsage
 
-# ExtensionlessMappingIT: 1 failing
-**/org/javaee8/cdi/dynamic/bean/ExtensionlessMappingIT.java
+# --- Mojarra ajax re-init under Chrome ---
+# The ajax response re-executes the inline "Init called" script a different
+# number of times than the TCK expects. The test source itself notes this as a
+# Mojarra codebase issue that appears under Chrome and passes under HtmlUnit.
+**/ee/jakarta/tck/faces/test/servlet30/ajax_selenium/Issue2162IT.java
diff --git 
a/runner-standalone/faces/src/test/resources/tomee-remote-profile.xml 
b/runner-standalone/faces/src/test/resources/tomee-remote-profile.xml
index a1110e9..e4a1e69 100644
--- a/runner-standalone/faces/src/test/resources/tomee-remote-profile.xml
+++ b/runner-standalone/faces/src/test/resources/tomee-remote-profile.xml
@@ -57,8 +57,14 @@
 
     <build>
         <plugins>
+            <!-- The TCK's modern modules run every IT (and the signature test)
+                 through the failsafe plugin, so the Arquillian remote 
container
+                 configuration and its TomEE system properties must live in the
+                 failsafe execution, not surefire; a surefire block never
+                 reaches the integration-test fork and the adapter falls back 
to
+                 its defaults (webprofile classifier, ephemeral working dir). 
-->
             <plugin>
-                <artifactId>maven-surefire-plugin</artifactId>
+                <artifactId>maven-failsafe-plugin</artifactId>
                 <configuration>
                     <systemPropertyVariables>
                         <tomee.stopPort>-1</tomee.stopPort>
@@ -71,6 +77,19 @@
                              was developed against. -->
                         <tomee.classifier>plume</tomee.classifier>
                         
<tomee.properties>openejb.environment.default=true</tomee.properties>
+                        <!-- The faces40/41 WARs bundle util-4.1.2.jar, whose
+                             BaseITNG @Deployment method references ShrinkWrap
+                             types (org.jboss.shrinkwrap.api.Archive) that the
+                             WARs do not package. OpenWebBeans loads every
+                             annotated class while scanning for CDI beans and
+                             aborts the deployment with a
+                             ClassNotFoundException where GlassFish/Weld
+                             tolerates the unloadable type. Stage the 
ShrinkWrap
+                             API the TCK's util module already resolves (1.2.6)
+                             into the server so the scan succeeds. -->
+                        
<tomee.additionalLibs>mvn:org.jboss.shrinkwrap:shrinkwrap-api:1.2.6
+mvn:org.jboss.shrinkwrap:shrinkwrap-spi:1.2.6
+mvn:org.jboss.shrinkwrap:shrinkwrap-impl-base:1.2.6</tomee.additionalLibs>
                     </systemPropertyVariables>
                 </configuration>
             </plugin>

Reply via email to