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

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/deltaspike.git


The following commit(s) were added to refs/heads/master by this push:
     new 6a7f9e70b DELTASPIKE-1484 exclude some JSF tests for MyFaces-4.0
6a7f9e70b is described below

commit 6a7f9e70bb3d7899b44f3de02eab598378925f93
Author: Mark Struberg <[email protected]>
AuthorDate: Thu Aug 7 14:37:53 2025 +0200

    DELTASPIKE-1484 exclude some JSF tests for MyFaces-4.0
    
    Not actually a but in MyFaces but Rhino used in htmlunit does not yet 
support
    the EcmaScript Spread (...) operator which is being used in MyFaces.
    See https://github.com/mozilla/rhino/issues/1217
---
 buildall.sh                                        |  22 +-
 deltaspike/cdictrl/impl-weld/pom.xml               |  62 -----
 .../deltaspike/cdise/tck/ContainerCtrlTckTest.java |  14 +-
 deltaspike/examples/jse-examples/pom.xml           |   1 +
 deltaspike/examples/pom.xml                        | 282 ++++++++++-----------
 deltaspike/modules/jsf/impl/pom.xml                |   2 +-
 .../viewaccess/ViewAccessScopedWebAppTest.java     |  10 +
 .../scope/window/WindowScopedContextFrameTest.java |  10 +
 .../impl/scope/window/WindowScopedContextTest.java |  11 +
 deltaspike/parent/code/pom.xml                     |   4 +-
 deltaspike/parent/pom.xml                          |   4 +-
 deltaspike/test-utils/pom.xml                      |   9 +
 .../test}/control/LockedContainerVersions.java     |   2 +-
 .../test/control/LockedImplementation.java}        |  34 ++-
 .../test}/control/LockedVersionRange.java          |   6 +-
 .../test}/control/VersionControlRule.java          |  77 ++++--
 .../test/utils/CdiContainerUnderTest.java          |  12 +-
 ...{CdiImplementation.java => Implementation.java} |  10 +-
 18 files changed, 301 insertions(+), 271 deletions(-)

diff --git a/buildall.sh b/buildall.sh
index 78faf27b4..a18ec7751 100755
--- a/buildall.sh
+++ b/buildall.sh
@@ -25,25 +25,17 @@
 
 rm mvn-*log
 
-# CDI-1.0, EE6
-mvn clean install -POWB -Dowb.version=1.2.7 -Dopenejb.owb.version=1.2.7 | tee 
mvn-owb1_2_7.log
-mvn clean install -PWeld1 -Dweld.version=1.1.10.Final | tee mvn-weld1_1_10.log
-mvn clean install -Ptomee-build-managed -Dtomee.version=1.7.5 
-Dopenejb.version=4.7.5 -Dopenejb.owb.version=1.2.8 | tee mvn-tomee_1_7_5.log
 
-# jbossas7 is broken on Java8, it strictly requires Java7
-# mvn clean install -Pjbossas-build-managed-7 | tee mvn-jbossas_7.log
+# CDI-2.0, EE8
 
-# CDI-1.2, EE7
-mvn clean install -POWB15 -Dowb.version=1.7.5 -Dopenejb.owb.version=1.7.5 
-Dopenejb.version=7.0.5 | tee mvn-owb1.7.5.log
-mvn clean install -PWeld2 -Dweld.version=2.4.6.Final | tee mvn-weld2_4_6.log
-mvn clean install -Pwildfly-build-managed | tee mvn-wildfly9.log
-mvn clean install -Ptomee7-build-managed -Dtomee.version=7.1.4 
-Dopenejb.version=7.1.4 -Dopenejb.owb.version=1.7.6 | tee mvn-tomee_7_1.4.log
+# works fine with Java11
+mvn clean install -POWB | tee mvn-owb4.0.3.log
+mvn clean install -Ptomee-build-managed -Dtomee.version=10.0.0-M1 | tee 
mvn-tomee10.0.0-M1.log
 
-# CDI-2.0, EE8
+mvn clean install -PWeld -Dweld.version=5.1.2.Final | tee mvn-weld5.1.2.log
 
-mvn clean install -POWB2 | tee mvn-owb2_0_5.log
-mvn clean install -POWB2 | tee mvn-owb2_0_5.log
-mvn clean install -PWeld3 -Dweld.version=3.1.9.Final | tee mvn-weld3_1_9.log
+# requires Java 17
+mvn clean install -Ptomee-build-managed -Dtomee.version=10.1.0 | tee 
mvn-tomee10.0.1.log
 
 
 # and now for the result check
diff --git a/deltaspike/cdictrl/impl-weld/pom.xml 
b/deltaspike/cdictrl/impl-weld/pom.xml
index 954ad679e..50d4cd40b 100644
--- a/deltaspike/cdictrl/impl-weld/pom.xml
+++ b/deltaspike/cdictrl/impl-weld/pom.xml
@@ -81,68 +81,6 @@
     <!--Following profiles add TCK tests for CDICTRL when running with 
Weld1/2/3 profiles--> 
     <!--This eliminated the tests when running on Wildfly container as it 
makes no sense there-->
     <profiles>
-        <profile>
-            <id>Weld1</id>
-            <build>
-                <plugins>
-                    <plugin>
-                        <artifactId>maven-dependency-plugin</artifactId>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <executions>
-                            <execution>
-                                <id>unpack</id>
-                                <phase>process-test-classes</phase>
-                                <goals>
-                                    <goal>unpack</goal>
-                                </goals>
-                                <configuration>
-                                    <artifactItems>
-                                        <artifactItem>
-                                            
<groupId>org.apache.deltaspike.test</groupId>
-                                            
<artifactId>deltaspike-cdictrl-tck</artifactId>
-                                            
<version>${project.version}</version>
-                                            
<outputDirectory>${project.build.directory}/test-classes/</outputDirectory>
-                                        </artifactItem>
-                                    </artifactItems>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>     
-    
-        <profile>
-            <id>Weld2</id>
-            <build>
-                <plugins>
-                    <plugin>
-                        <artifactId>maven-dependency-plugin</artifactId>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <executions>
-                            <execution>
-                                <id>unpack</id>
-                                <phase>process-test-classes</phase>
-                                <goals>
-                                    <goal>unpack</goal>
-                                </goals>
-                                <configuration>
-                                    <artifactItems>
-                                        <artifactItem>
-                                            
<groupId>org.apache.deltaspike.test</groupId>
-                                            
<artifactId>deltaspike-cdictrl-tck</artifactId>
-                                            
<version>${project.version}</version>
-                                            
<outputDirectory>${project.build.directory}/test-classes/</outputDirectory>
-                                        </artifactItem>
-                                    </artifactItems>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>     
-
         <profile>
             <id>Weld</id>
             <build>
diff --git 
a/deltaspike/cdictrl/tck/src/main/java/org/apache/deltaspike/cdise/tck/ContainerCtrlTckTest.java
 
b/deltaspike/cdictrl/tck/src/main/java/org/apache/deltaspike/cdise/tck/ContainerCtrlTckTest.java
index 2fa2d89e7..8d050099c 100644
--- 
a/deltaspike/cdictrl/tck/src/main/java/org/apache/deltaspike/cdise/tck/ContainerCtrlTckTest.java
+++ 
b/deltaspike/cdictrl/tck/src/main/java/org/apache/deltaspike/cdise/tck/ContainerCtrlTckTest.java
@@ -36,10 +36,10 @@ import org.apache.deltaspike.cdise.api.ContextControl;
 import org.apache.deltaspike.cdise.tck.beans.Car;
 import org.apache.deltaspike.cdise.tck.beans.CarRepair;
 import org.apache.deltaspike.cdise.tck.beans.TestUser;
-import org.apache.deltaspike.cdise.tck.control.LockedCDIImplementation;
-import org.apache.deltaspike.cdise.tck.control.LockedVersionRange;
-import org.apache.deltaspike.cdise.tck.control.VersionControlRule;
-import org.apache.deltaspike.test.utils.CdiImplementation;
+import org.apache.deltaspike.test.control.LockedImplementation;
+import org.apache.deltaspike.test.control.LockedVersionRange;
+import org.apache.deltaspike.test.control.VersionControlRule;
+import org.apache.deltaspike.test.utils.Implementation;
 import org.junit.Assert;
 import org.junit.Rule;
 import org.junit.Test;
@@ -225,9 +225,9 @@ public class ContainerCtrlTckTest
         cdiContainer.shutdown();
     }
 
-    @LockedCDIImplementation(versions = {
-            @LockedVersionRange(implementation = CdiImplementation.WELD11, 
versionRange = "[1.1.14,1.2)"),
-            @LockedVersionRange(implementation = CdiImplementation.WELD20, 
versionRange = "[2.0.1.Final,2.1)")
+    @LockedImplementation(versions = {
+            @LockedVersionRange(implementation = Implementation.WELD11, 
versionRange = "[1.1.14,1.2)"),
+            @LockedVersionRange(implementation = Implementation.WELD20, 
versionRange = "[2.0.1.Final,2.1)")
         })
     @Test
     public void testShutdownWithInactiveContexts()
diff --git a/deltaspike/examples/jse-examples/pom.xml 
b/deltaspike/examples/jse-examples/pom.xml
index b6bc12c10..8524522bb 100644
--- a/deltaspike/examples/jse-examples/pom.xml
+++ b/deltaspike/examples/jse-examples/pom.xml
@@ -105,6 +105,7 @@
 
     <dependencies>
 
+
         <!-- DeltaSpike modules -->
         <dependency>
             <groupId>org.apache.deltaspike.core</groupId>
diff --git a/deltaspike/examples/pom.xml b/deltaspike/examples/pom.xml
index f1a3d0b23..99e50fe6c 100644
--- a/deltaspike/examples/pom.xml
+++ b/deltaspike/examples/pom.xml
@@ -19,31 +19,31 @@
   -->
 
 <project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
--->
+    <!--
+        Licensed to the Apache Software Foundation (ASF) under one
+        or more contributor license agreements.  See the NOTICE file
+        distributed with this work for additional information
+        regarding copyright ownership.  The ASF licenses this file
+        to you under the Apache License, Version 2.0 (the
+        "License"); you may not use this file except in compliance
+        with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+        Unless required by applicable law or agreed to in writing,
+        software distributed under the License is distributed on an
+        "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+        KIND, either express or implied.  See the License for the
+        specific language governing permissions and limitations
+        under the License.
+    -->
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
         <groupId>org.apache.deltaspike</groupId>
-        <artifactId>parent</artifactId>
+        <artifactId>parent-code</artifactId>
         <version>2.0.1-SNAPSHOT</version>
-        <relativePath>../parent/pom.xml</relativePath>
+        <relativePath>../parent/code/pom.xml</relativePath>
     </parent>
 
     <groupId>org.apache.deltaspike.examples</groupId>
@@ -51,7 +51,7 @@
     <packaging>pom</packaging>
 
     <name>Apache DeltaSpike Examples</name>
-    
+
     <modules>
         <module>jse-examples</module>
         <module>jsf-examples</module>
@@ -67,126 +67,126 @@
         <deploy.skip>false</deploy.skip>
     </properties>
 
-       <dependencyManagement>
-               <dependencies>
-               <dependency>
-                   <groupId>org.apache.deltaspike.core</groupId>
-                   <artifactId>deltaspike-core-api</artifactId>
-                   <version>${project.version}</version>
-               </dependency>
-       
-               <dependency>
-                   <groupId>org.apache.deltaspike.core</groupId>
-                   <artifactId>deltaspike-core-impl</artifactId>
-                   <version>${project.version}</version>
-                   <scope>runtime</scope>
-               </dependency>
-               
-               <dependency>
-                   <groupId>org.apache.deltaspike.modules</groupId>
-                   <artifactId>deltaspike-security-module-api</artifactId>
-                   <version>${project.version}</version>
-               </dependency>
-       
-               <dependency>
-                   <groupId>org.apache.deltaspike.modules</groupId>
-                   <artifactId>deltaspike-security-module-impl</artifactId>
-                   <version>${project.version}</version>
-                   <scope>runtime</scope>
-               </dependency>
-       
-               <dependency>
-                   <groupId>org.apache.deltaspike.modules</groupId>
-                   <artifactId>deltaspike-jsf-module-api</artifactId>
-                   <version>${project.version}</version>
-               </dependency>
-
-               <dependency>
-                   <groupId>org.apache.deltaspike.modules</groupId>
-                   <artifactId>deltaspike-jsf-module-impl</artifactId>
-                   <version>${project.version}</version>
-                   <scope>runtime</scope>
-               </dependency>
-
-               <dependency>
-                   <groupId>org.apache.deltaspike.modules</groupId>
-                   <artifactId>deltaspike-jpa-module-api</artifactId>
-                   <version>${project.version}</version>
-               </dependency>
-
-               <dependency>
-                   <groupId>org.apache.deltaspike.modules</groupId>
-                   <artifactId>deltaspike-jpa-module-impl</artifactId>
-                   <version>${project.version}</version>
-                   <scope>runtime</scope>
-               </dependency>
-
-               <dependency>
-                   <groupId>org.apache.deltaspike.modules</groupId>
-                   <artifactId>deltaspike-data-module-api</artifactId>
-                   <version>${project.version}</version>
-               </dependency>
-
-               <dependency>
-                   <groupId>org.apache.deltaspike.modules</groupId>
-                   <artifactId>deltaspike-data-module-impl</artifactId>
-                   <version>${project.version}</version>
-                   <scope>runtime</scope>
-               </dependency>
-
-               <dependency>
-                   <groupId>org.apache.deltaspike.modules</groupId>
-                   <artifactId>deltaspike-scheduler-module-api</artifactId>
-                   <version>${project.version}</version>
-               </dependency>
-
-               <dependency>
-                   <groupId>org.apache.deltaspike.modules</groupId>
-                   <artifactId>deltaspike-scheduler-module-impl</artifactId>
-                   <version>${project.version}</version>
-                   <scope>runtime</scope>
-               </dependency>
-
-               <dependency>
-                   <groupId>org.apache.deltaspike.cdictrl</groupId>
-                   <artifactId>deltaspike-cdictrl-api</artifactId>
-                   <version>${project.version}</version>
-               </dependency>
-
-               <dependency>
-                   <groupId>org.apache.deltaspike.cdictrl</groupId>
-                   <artifactId>deltaspike-cdictrl-owb</artifactId>
-                   <version>${project.version}</version>
-               </dependency>
-
-               <dependency>
-                   <groupId>org.apache.deltaspike.cdictrl</groupId>
-                   <artifactId>deltaspike-cdictrl-openejb</artifactId>
-                   <version>${project.version}</version>
-               </dependency>
-
-               <dependency>
-                   <groupId>org.apache.deltaspike.cdictrl</groupId>
-                   <artifactId>deltaspike-cdictrl-weld</artifactId>
-                   <version>${project.version}</version>
-               </dependency>
-
-               <dependency>
-                   <groupId>org.apache.tomee</groupId>
-                   <artifactId>jakartaee-api</artifactId>
-                   <version>${tomee-api.version}</version>
-                   <scope>provided</scope>
-               </dependency>
-               
-               <dependency>
-                   <groupId>org.apache.myfaces.core</groupId>
-                   <artifactId>myfaces-api</artifactId>
-                   <version>${myfaces.version}</version>
-                   <scope>provided</scope>
-               </dependency>
-
-               </dependencies>
-       </dependencyManagement>
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.deltaspike.core</groupId>
+                <artifactId>deltaspike-core-api</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.deltaspike.core</groupId>
+                <artifactId>deltaspike-core-impl</artifactId>
+                <version>${project.version}</version>
+                <scope>runtime</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.deltaspike.modules</groupId>
+                <artifactId>deltaspike-security-module-api</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.deltaspike.modules</groupId>
+                <artifactId>deltaspike-security-module-impl</artifactId>
+                <version>${project.version}</version>
+                <scope>runtime</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.deltaspike.modules</groupId>
+                <artifactId>deltaspike-jsf-module-api</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.deltaspike.modules</groupId>
+                <artifactId>deltaspike-jsf-module-impl</artifactId>
+                <version>${project.version}</version>
+                <scope>runtime</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.deltaspike.modules</groupId>
+                <artifactId>deltaspike-jpa-module-api</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.deltaspike.modules</groupId>
+                <artifactId>deltaspike-jpa-module-impl</artifactId>
+                <version>${project.version}</version>
+                <scope>runtime</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.deltaspike.modules</groupId>
+                <artifactId>deltaspike-data-module-api</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.deltaspike.modules</groupId>
+                <artifactId>deltaspike-data-module-impl</artifactId>
+                <version>${project.version}</version>
+                <scope>runtime</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.deltaspike.modules</groupId>
+                <artifactId>deltaspike-scheduler-module-api</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.deltaspike.modules</groupId>
+                <artifactId>deltaspike-scheduler-module-impl</artifactId>
+                <version>${project.version}</version>
+                <scope>runtime</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.deltaspike.cdictrl</groupId>
+                <artifactId>deltaspike-cdictrl-api</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.deltaspike.cdictrl</groupId>
+                <artifactId>deltaspike-cdictrl-owb</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.deltaspike.cdictrl</groupId>
+                <artifactId>deltaspike-cdictrl-openejb</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.deltaspike.cdictrl</groupId>
+                <artifactId>deltaspike-cdictrl-weld</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.tomee</groupId>
+                <artifactId>jakartaee-api</artifactId>
+                <version>${tomee-api.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.myfaces.core</groupId>
+                <artifactId>myfaces-api</artifactId>
+                <version>${myfaces.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+        </dependencies>
+    </dependencyManagement>
 
     <dependencies>
     </dependencies>
diff --git a/deltaspike/modules/jsf/impl/pom.xml 
b/deltaspike/modules/jsf/impl/pom.xml
index 4e566a6c5..292862a3b 100644
--- a/deltaspike/modules/jsf/impl/pom.xml
+++ b/deltaspike/modules/jsf/impl/pom.xml
@@ -32,7 +32,7 @@
     <name>Apache DeltaSpike JSF-Module Impl</name>
 
     <properties>
-        <selenium.version>4.18.1</selenium.version>
+        <selenium.version>4.34.0</selenium.version>
     </properties>
 
     <build>
diff --git 
a/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/scope/viewaccess/ViewAccessScopedWebAppTest.java
 
b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/scope/viewaccess/ViewAccessScopedWebAppTest.java
index b761f5577..0b05bdf95 100644
--- 
a/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/scope/viewaccess/ViewAccessScopedWebAppTest.java
+++ 
b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/scope/viewaccess/ViewAccessScopedWebAppTest.java
@@ -19,9 +19,12 @@
 package org.apache.deltaspike.test.jsf.impl.scope.viewaccess;
 
 import org.apache.deltaspike.test.category.WebProfileCategory;
+import org.apache.deltaspike.test.control.LockedImplementation;
+import org.apache.deltaspike.test.control.VersionControlRule;
 import 
org.apache.deltaspike.test.jsf.impl.scope.viewaccess.beans.ViewAccessScopedBeanX;
 import 
org.apache.deltaspike.test.jsf.impl.scope.viewaccess.beans.ViewAccessScopedBeanY;
 import org.apache.deltaspike.test.jsf.impl.util.ArchiveUtils;
+import org.apache.deltaspike.test.utils.Implementation;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.container.test.api.RunAsClient;
 import org.jboss.arquillian.junit.Arquillian;
@@ -29,6 +32,7 @@ import org.jboss.arquillian.test.api.ArquillianResource;
 import org.jboss.shrinkwrap.api.ShrinkWrap;
 import org.jboss.shrinkwrap.api.spec.WebArchive;
 import org.junit.Assert;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
@@ -49,6 +53,9 @@ public class ViewAccessScopedWebAppTest
     @ArquillianResource
     private URL contextPath;
 
+    @Rule
+    public VersionControlRule versionControlRule = new VersionControlRule();
+
     @Deployment
     public static WebArchive deploy()
     {
@@ -69,6 +76,9 @@ public class ViewAccessScopedWebAppTest
 
     @Test
     @RunAsClient
+    // Actually not a MyFaces bug but html-unit uses Rhino which cannot handle 
EcmaScript spread operator syntax yet
+    // See https://github.com/mozilla/rhino/issues/968
+    @LockedImplementation(excludedImplementations = {Implementation.MYFACES40})
     public void testForward() throws Exception
     {
         WebDriver driver = new HtmlUnitDriver(true);
diff --git 
a/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/scope/window/WindowScopedContextFrameTest.java
 
b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/scope/window/WindowScopedContextFrameTest.java
index 9f5f74c95..d59c51adf 100644
--- 
a/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/scope/window/WindowScopedContextFrameTest.java
+++ 
b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/scope/window/WindowScopedContextFrameTest.java
@@ -20,9 +20,12 @@ package org.apache.deltaspike.test.jsf.impl.scope.window;
 
 
 import org.apache.deltaspike.test.category.WebProfileCategory;
+import org.apache.deltaspike.test.control.LockedImplementation;
+import org.apache.deltaspike.test.control.VersionControlRule;
 import org.apache.deltaspike.test.jsf.impl.config.TestJsfModuleConfig;
 import 
org.apache.deltaspike.test.jsf.impl.scope.window.beans.WindowScopedBackingBean;
 import org.apache.deltaspike.test.jsf.impl.util.ArchiveUtils;
+import org.apache.deltaspike.test.utils.Implementation;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.container.test.api.RunAsClient;
 import org.jboss.arquillian.junit.Arquillian;
@@ -30,6 +33,7 @@ import org.jboss.arquillian.test.api.ArquillianResource;
 import org.jboss.shrinkwrap.api.ShrinkWrap;
 import org.jboss.shrinkwrap.api.spec.WebArchive;
 import org.junit.Assert;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
@@ -55,6 +59,9 @@ public class WindowScopedContextFrameTest
     @ArquillianResource
     private URL contextPath;
 
+    @Rule
+    public VersionControlRule versionControlRule = new VersionControlRule();
+
     @Deployment
     public static WebArchive deploy()
     {
@@ -75,6 +82,9 @@ public class WindowScopedContextFrameTest
 
     @Test
     @RunAsClient
+    // Actually not a MyFaces bug but html-unit uses Rhino which cannot handle 
EcmaScript spread operator syntax yet
+    // See https://github.com/mozilla/rhino/issues/968
+    @LockedImplementation(excludedImplementations = {Implementation.MYFACES40})
     public void testWindowId() throws Exception
     {
         WebDriver driver = new HtmlUnitDriver(true);
diff --git 
a/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/scope/window/WindowScopedContextTest.java
 
b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/scope/window/WindowScopedContextTest.java
index ad95fb391..e9c128b11 100644
--- 
a/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/scope/window/WindowScopedContextTest.java
+++ 
b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/scope/window/WindowScopedContextTest.java
@@ -20,9 +20,13 @@ package org.apache.deltaspike.test.jsf.impl.scope.window;
 
 
 import org.apache.deltaspike.test.category.WebProfileCategory;
+import org.apache.deltaspike.test.control.LockedImplementation;
+import org.apache.deltaspike.test.control.LockedVersionRange;
+import org.apache.deltaspike.test.control.VersionControlRule;
 import org.apache.deltaspike.test.jsf.impl.config.TestJsfModuleConfig;
 import 
org.apache.deltaspike.test.jsf.impl.scope.window.beans.WindowScopedBackingBean;
 import org.apache.deltaspike.test.jsf.impl.util.ArchiveUtils;
+import org.apache.deltaspike.test.utils.Implementation;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.container.test.api.RunAsClient;
 import org.jboss.arquillian.junit.Arquillian;
@@ -30,6 +34,7 @@ import org.jboss.arquillian.test.api.ArquillianResource;
 import org.jboss.shrinkwrap.api.ShrinkWrap;
 import org.jboss.shrinkwrap.api.spec.WebArchive;
 import org.junit.Assert;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
@@ -54,6 +59,9 @@ public class WindowScopedContextTest
 {
     private static final Logger log = 
Logger.getLogger(WindowScopedContextTest.class.getName());
 
+    @Rule
+    public VersionControlRule versionControlRule = new VersionControlRule();
+
     @ArquillianResource
     private URL contextPath;
 
@@ -77,6 +85,9 @@ public class WindowScopedContextTest
 
     @Test
     @RunAsClient
+    // Actually not a MyFaces bug but html-unit uses Rhino which cannot handle 
EcmaScript spread operator syntax yet
+    // See https://github.com/mozilla/rhino/issues/968
+    @LockedImplementation(excludedImplementations = {Implementation.MYFACES40})
     public void testWindowId() throws Exception
     {
         WebDriver driver = new HtmlUnitDriver(true);
diff --git a/deltaspike/parent/code/pom.xml b/deltaspike/parent/code/pom.xml
index 1c244cbdf..86dc6449f 100644
--- a/deltaspike/parent/code/pom.xml
+++ b/deltaspike/parent/code/pom.xml
@@ -504,8 +504,8 @@
             <id>tomee-build-managed</id>
 
             <properties>
-                <jakartaeeapi.version>10.0-M2</jakartaeeapi.version>
-                <owb.version>4.0.2</owb.version>
+                <jakartaeeapi.version>10.0</jakartaeeapi.version>
+                <owb.version>4.0.3</owb.version>
                 <cdicontainer.version>owb-${owb.version}</cdicontainer.version>
             </properties>
 
diff --git a/deltaspike/parent/pom.xml b/deltaspike/parent/pom.xml
index b254d3a7c..06b15b325 100644
--- a/deltaspike/parent/pom.xml
+++ b/deltaspike/parent/pom.xml
@@ -48,14 +48,14 @@
 
     <properties>
         <java.version>11</java.version>
-        <owb.version>4.0.2</owb.version>
+        <owb.version>4.0.3</owb.version>
 
         <!-- Weld profiles (in parent/code/pom.xml) override this version -->
         <weld.version>5.1.2.Final</weld.version>
 
         <!-- for cdictrl-openejb -->
         <tomee.version>10.0.0-M1</tomee.version>
-        <tomee-api.version>10.0-M2</tomee-api.version>
+        <tomee-api.version>10.0</tomee-api.version>
 
         <openejb.owb.version>${owb.version}</openejb.owb.version>
         <openejb.owb.version>${owb.version}</openejb.owb.version>
diff --git a/deltaspike/test-utils/pom.xml b/deltaspike/test-utils/pom.xml
index e8e92e92f..a9dbfc6d5 100644
--- a/deltaspike/test-utils/pom.xml
+++ b/deltaspike/test-utils/pom.xml
@@ -53,6 +53,15 @@
             <artifactId>maven-artifact</artifactId>
             <version>${maven.artifact.version}</version>
         </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>compile</scope>
+            <optional>true</optional>
+        </dependency>
+
+
     </dependencies>
 
     <properties>
diff --git 
a/deltaspike/cdictrl/tck/src/main/java/org/apache/deltaspike/cdise/tck/control/LockedContainerVersions.java
 
b/deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/control/LockedContainerVersions.java
similarity index 95%
rename from 
deltaspike/cdictrl/tck/src/main/java/org/apache/deltaspike/cdise/tck/control/LockedContainerVersions.java
rename to 
deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/control/LockedContainerVersions.java
index 25ba21214..4b37f7889 100644
--- 
a/deltaspike/cdictrl/tck/src/main/java/org/apache/deltaspike/cdise/tck/control/LockedContainerVersions.java
+++ 
b/deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/control/LockedContainerVersions.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.deltaspike.cdise.tck.control;
+package org.apache.deltaspike.test.control;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git 
a/deltaspike/cdictrl/tck/src/main/java/org/apache/deltaspike/cdise/tck/control/LockedCDIImplementation.java
 
b/deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/control/LockedImplementation.java
similarity index 50%
rename from 
deltaspike/cdictrl/tck/src/main/java/org/apache/deltaspike/cdise/tck/control/LockedCDIImplementation.java
rename to 
deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/control/LockedImplementation.java
index 3d51d0a93..37189ae4d 100644
--- 
a/deltaspike/cdictrl/tck/src/main/java/org/apache/deltaspike/cdise/tck/control/LockedCDIImplementation.java
+++ 
b/deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/control/LockedImplementation.java
@@ -16,32 +16,48 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.deltaspike.cdise.tck.control;
+package org.apache.deltaspike.test.control;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import org.apache.deltaspike.test.utils.CdiImplementation;
+import org.apache.deltaspike.test.utils.Implementation;
 
 /**
- * This annotation is used to define the {@link #cdiImplementations()} which 
the test is allowed to run. 
+ * This annotation is used to define the {@link #implementations()} which the 
test is allowed to run.
  * 
- * If {@link #cdiImplementations()} is not defined, It will be used all 
available implementations 
- * defined on {@link CdiImplementation}.
+ * If {@link #implementations()} is not defined, It will be used all available 
implementations
+ * defined on {@link Implementation}.
  * 
- * An specific implementation can have {@link #versions()} range locked 
throught the use of {@link LockedVersionRange}
+ * A specific implementation can have {@link #versions()} range locked through 
the use of {@link LockedVersionRange}
  * @author rafaelbenevides
+ * @author struberg
  *
  */
 @Target(value = { ElementType.METHOD })
 @Retention(RetentionPolicy.RUNTIME)
-public @interface LockedCDIImplementation
+public @interface LockedImplementation
 {
 
-    CdiImplementation[] cdiImplementations() default { 
CdiImplementation.OWB11, CdiImplementation.OWB12,
-            CdiImplementation.WELD11, CdiImplementation.WELD12, 
CdiImplementation.WELD20 };
+    /**
+     * If defined, the test will only run if one of those implementations get 
detected
+     */
+    Implementation[] implementations() default {};
 
+    /**
+     * Can be used to further restrict the implementation for {@link 
#implementations()}.
+     */
     LockedVersionRange[] versions() default { };
+
+    /**
+     * If defined, the test will <b>NOT</b> run if one of those 
implementations get detected
+     */
+    Implementation[] excludedImplementations() default {};
+
+    /**
+     * Can be used to further restrict the implementation for {@link 
#excludedImplementations()} ()}.
+     */
+    LockedVersionRange[] excludedVersions() default {};
 }
diff --git 
a/deltaspike/cdictrl/tck/src/main/java/org/apache/deltaspike/cdise/tck/control/LockedVersionRange.java
 
b/deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/control/LockedVersionRange.java
similarity index 90%
rename from 
deltaspike/cdictrl/tck/src/main/java/org/apache/deltaspike/cdise/tck/control/LockedVersionRange.java
rename to 
deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/control/LockedVersionRange.java
index 197237447..91eb15ba8 100644
--- 
a/deltaspike/cdictrl/tck/src/main/java/org/apache/deltaspike/cdise/tck/control/LockedVersionRange.java
+++ 
b/deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/control/LockedVersionRange.java
@@ -16,14 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.deltaspike.cdise.tck.control;
+package org.apache.deltaspike.test.control;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import org.apache.deltaspike.test.utils.CdiImplementation;
+import org.apache.deltaspike.test.utils.Implementation;
 
 /**
  * It allows to specify the version range that the test is allowed to run for 
an specified {@link #implementation()}.
@@ -37,7 +37,7 @@ import org.apache.deltaspike.test.utils.CdiImplementation;
 public @interface LockedVersionRange
 {
 
-    CdiImplementation implementation();
+    Implementation implementation();
 
     String versionRange();
 
diff --git 
a/deltaspike/cdictrl/tck/src/main/java/org/apache/deltaspike/cdise/tck/control/VersionControlRule.java
 
b/deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/control/VersionControlRule.java
similarity index 50%
rename from 
deltaspike/cdictrl/tck/src/main/java/org/apache/deltaspike/cdise/tck/control/VersionControlRule.java
rename to 
deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/control/VersionControlRule.java
index 7a40f1562..ed44b5dc5 100644
--- 
a/deltaspike/cdictrl/tck/src/main/java/org/apache/deltaspike/cdise/tck/control/VersionControlRule.java
+++ 
b/deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/control/VersionControlRule.java
@@ -16,10 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.deltaspike.cdise.tck.control;
+package org.apache.deltaspike.test.control;
+
+import java.util.Arrays;
 
 import org.apache.deltaspike.test.utils.CdiContainerUnderTest;
-import org.apache.deltaspike.test.utils.CdiImplementation;
+import org.apache.deltaspike.test.utils.Implementation;
 import org.junit.rules.TestRule;
 import org.junit.runner.Description;
 import org.junit.runners.model.Statement;
@@ -27,9 +29,9 @@ import org.junit.runners.model.Statement;
 
 /** 
  * 
- * This {@link TestRule} allows an test to check those methods annotated with 
{@link LockedCDIImplementation}.
+ * This {@link TestRule} allows a test to check those methods annotated with 
{@link LockedImplementation}.
  * 
- * You can define some {@link LockedCDIImplementation}. Example: 
+ * You can define some {@link LockedImplementation}. Example:
  * 
  * <pre>
  *     @LockedCDIImplementation(cdiImplementations = {
@@ -39,7 +41,7 @@ import org.junit.runners.model.Statement;
  * </pre>
  *  
  * 
- * You can also define specific versions of an specific implementation. 
Example:
+ * You can also define specific versions of a specific implementation. Example:
  * 
  * <pre>
  *     @LockedCDIImplementation(versions = {
@@ -49,10 +51,11 @@ import org.junit.runners.model.Statement;
  * </pre>
  * 
  * @author rafaelbenevides
- *
+ * @author struberg
  */
 public class VersionControlRule implements TestRule
 {
+    private static final Implementation[] EMPTY_IMPL = new Implementation[0];
 
     @Override
     public Statement apply(final Statement base, final Description description)
@@ -63,8 +66,8 @@ public class VersionControlRule implements TestRule
             @Override
             public void evaluate() throws Throwable
             {
-                LockedCDIImplementation lockedCDIImplAnnotation = description
-                        .getAnnotation(LockedCDIImplementation.class);
+                LockedImplementation lockedCDIImplAnnotation = description
+                        .getAnnotation(LockedImplementation.class);
                 // no @LockedCDIImplementation present or if running specified 
Container
                 if (lockedCDIImplAnnotation == null)
                 {
@@ -76,31 +79,49 @@ public class VersionControlRule implements TestRule
                 }
             }
 
-            private void checkAnnotation(LockedCDIImplementation 
lockedCDIImplAnnotation, Statement base)
+            private void checkAnnotation(LockedImplementation 
lockedImplAnnotation, Statement base)
                 throws Throwable
             {
-                CdiImplementation[] implementations = 
lockedCDIImplAnnotation.cdiImplementations();
-                for (CdiImplementation cdiImpl : implementations)
+                Implementation[] implementations = 
getImplementations(lockedImplAnnotation.implementations(), 
lockedImplAnnotation.versions());
+
+                // Run the test if there is no explicit list of 
implementations to only run on.
+                boolean shouldRun = implementations.length == 0;
+
+                for (Implementation impl : implementations)
+                {
+                    String versionRange = 
getLockedVersionRange(lockedImplAnnotation.versions(), impl);
+                    if (CdiContainerUnderTest.isImplementationVersion(impl, 
versionRange))
+                    {
+                        shouldRun = true;
+                    }
+                }
+
+                // now check the exclude list: implementations to NOT run on!
+                final Implementation[] excludedImplementations = 
getImplementations(lockedImplAnnotation.excludedImplementations(),
+                                                                               
     lockedImplAnnotation.excludedVersions());
+                for (Implementation impl : excludedImplementations)
                 {
-                    String versionRange = 
getLockedVersionRange(lockedCDIImplAnnotation, cdiImpl);
-                    if (CdiContainerUnderTest.isCdiVersion(cdiImpl, 
versionRange))
+                    String versionRange = 
getLockedVersionRange(lockedImplAnnotation.excludedVersions(), impl);
+                    if (CdiContainerUnderTest.isImplementationVersion(impl, 
versionRange))
                     {
-                        base.evaluate();
+                        shouldRun = false;
                     }
                 }
+
+                if (shouldRun)
+                {
+                    base.evaluate();
+                }
             }
 
             /**
              * Get the locked version Range
              * 
-             * @param lockedCDIImplAnnotation
-             * @param cdiImpl
              * @return the locked version range
              */
-            private String getLockedVersionRange(LockedCDIImplementation 
lockedCDIImplAnnotation,
-                    CdiImplementation cdiImpl)
+            private String getLockedVersionRange(LockedVersionRange[] versions,
+                                                 Implementation cdiImpl)
             {
-                LockedVersionRange[] versions = 
lockedCDIImplAnnotation.versions();
                 for (LockedVersionRange versionRange : versions)
                 {
                     if (versionRange.implementation().equals(cdiImpl))
@@ -112,4 +133,22 @@ public class VersionControlRule implements TestRule
             }
         };
     }
+
+    private Implementation[] getImplementations(Implementation[] 
implementations, LockedVersionRange[] lockedVersionRanges)
+    {
+        if (implementations != null && implementations.length > 0)
+        {
+            return implementations;
+        }
+
+        if (lockedVersionRanges != null && lockedVersionRanges.length > 0)
+        {
+            return Arrays.stream(lockedVersionRanges)
+                .map(lr -> lr.implementation())
+                .distinct()
+                .toArray(Implementation[]::new);
+        }
+
+        return EMPTY_IMPL;
+    }
 }
diff --git 
a/deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/utils/CdiContainerUnderTest.java
 
b/deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/utils/CdiContainerUnderTest.java
index 003509038..1764239ff 100644
--- 
a/deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/utils/CdiContainerUnderTest.java
+++ 
b/deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/utils/CdiContainerUnderTest.java
@@ -63,26 +63,26 @@ public class CdiContainerUnderTest
     }
 
     /**
-     * Verify if the runtime is using the following CdiImplementation
+     * Verify if the runtime is using the following Implementation
      * 
-     * @param cdiImplementation
+     * @param implementation
      * @param versionRange
-     *            optional - If not defined it will used the range defined on 
{@link CdiImplementation}
+     *            optional - If not defined it will used the range defined on 
{@link Implementation}
      * @return
      * @throws InvalidVersionSpecificationException
      */
-    public static boolean isCdiVersion(CdiImplementation cdiImplementation, 
String versionRange)
+    public static boolean isImplementationVersion(Implementation 
implementation, String versionRange)
         throws InvalidVersionSpecificationException
     {
 
-        Class implementationClass = 
tryToLoadClassForName(cdiImplementation.getImplementationClassName());
+        Class implementationClass = 
tryToLoadClassForName(implementation.getImplementationClassName());
 
         if (implementationClass == null)
         {
             return false;
         }
 
-        VersionRange range = VersionRange.createFromVersionSpec(versionRange 
== null ? cdiImplementation
+        VersionRange range = VersionRange.createFromVersionSpec(versionRange 
== null ? implementation
                 .getVersionRange() : versionRange);
         String containerVersion = getJarSpecification(implementationClass);
         return containerVersion != null && range.containsVersion(new 
DefaultArtifactVersion(containerVersion));
diff --git 
a/deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/utils/CdiImplementation.java
 
b/deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/utils/Implementation.java
similarity index 86%
rename from 
deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/utils/CdiImplementation.java
rename to 
deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/utils/Implementation.java
index 9f95934bb..e0ad49f0a 100644
--- 
a/deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/utils/CdiImplementation.java
+++ 
b/deltaspike/test-utils/src/main/java/org/apache/deltaspike/test/utils/Implementation.java
@@ -18,19 +18,23 @@
  */
 package org.apache.deltaspike.test.utils;
 
-public enum CdiImplementation
+public enum Implementation
 {
     OWB11 ("org.apache.webbeans.container.BeanManagerImpl", "[1.1,1.2)"),
     OWB12 ("org.apache.webbeans.container.BeanManagerImpl", "[1.2,1.3)"),
 
     WELD11("org.jboss.weld.manager.BeanManagerImpl", "[1.1,1.2)"),
     WELD12("org.jboss.weld.manager.BeanManagerImpl", "[1.2,1.3)"),
-    WELD20("org.jboss.weld.manager.BeanManagerImpl", "[2.0,2.1)");
+    WELD20("org.jboss.weld.manager.BeanManagerImpl", "[2.0,2.1)"),
+
+    MYFACES40("jakarta.faces.annotation.FacesConfig", "[4.0,4.1)");
+
+    // not really a CDI implementation but the mechanism works as well.
 
     private final String implementationClassName;
     private final String versionRange;
 
-    CdiImplementation(String implementationClassName, String versionRange)
+    Implementation(String implementationClassName, String versionRange)
     {
         this.implementationClassName = implementationClassName;
         this.versionRange = versionRange;


Reply via email to