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

pkarwasz pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/release-2.x by this push:
     new 15166c8827 Fix `log4j-api` Java 9 tests
15166c8827 is described below

commit 15166c8827e734bf26b039f7beef474061ea9127
Author: Piotr P. Karwasz <[email protected]>
AuthorDate: Thu Apr 14 23:56:55 2022 +0200

    Fix `log4j-api` Java 9 tests
    
    Due to SUREFIRE-2073, the tests in `log4j-api-java9` are executed on the
    classpath instead of the modulepath.
    
    This can be fixed by compiling the tests themselves using Java 8, to
    work around Surefire's limitation.
---
 log4j-api-java9/pom.xml                            | 65 +++++++++-------------
 log4j-api-java9/src/main/java/module-info.java     |  2 +
 .../{ProcessIdUtilTest.java => ModuleTest.java}    | 20 ++++---
 .../log4j/util/java9/ProcessIdUtilTest.java        |  4 +-
 .../logging/log4j/util/java9/StackLocatorTest.java | 11 ++--
 .../src/test/{java => java9}/module-info.java      |  0
 .../logging/log4j/util/java9/ModuleUtil.java}      | 15 +++--
 7 files changed, 61 insertions(+), 56 deletions(-)

diff --git a/log4j-api-java9/pom.xml b/log4j-api-java9/pom.xml
index b022f576ab..d2f93dd862 100644
--- a/log4j-api-java9/pom.xml
+++ b/log4j-api-java9/pom.xml
@@ -36,33 +36,9 @@
       <groupId>org.junit.jupiter</groupId>
       <artifactId>junit-jupiter-engine</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-core</artifactId>
-      <scope>test</scope>
-    </dependency>
   </dependencies>
   <build>
     <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-toolchains-plugin</artifactId>
-        <version>3.0.0</version>
-        <executions>
-          <execution>
-            <goals>
-              <goal>toolchain</goal>
-            </goals>
-          </execution>
-        </executions>
-        <configuration>
-          <toolchains>
-            <jdk>
-              <version>[9, )</version>
-            </jdk>
-          </toolchains>
-        </configuration>
-      </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-compiler-plugin</artifactId>
@@ -73,7 +49,14 @@
             <goals>
               <goal>compile</goal>
             </goals>
+            <configuration>
+              <jdkToolchain>
+                <version>[9, )</version>
+              </jdkToolchain>
+              <release>9</release>
+            </configuration>
           </execution>
+          <!-- We explicitly compile tests using Java 8 to work around 
SUREFIRE-2073 -->
           <execution>
             <id>default-test-compile</id>
             <phase>test-compile</phase>
@@ -81,19 +64,31 @@
               <goal>testCompile</goal>
             </goals>
           </execution>
+          <!-- Of course the 'module-info.java' needs Java 9 -->
+          <execution>
+            <id>test-compile-module</id>
+            <phase>test-compile</phase>
+            <goals>
+              <goal>testCompile</goal>
+            </goals>
+            <configuration>
+              <jdkToolchain>
+                <version>[9, )</version>
+              </jdkToolchain>
+              <release>9</release>
+              <compileSourceRoots>
+                
<compileSourceRoot>${project.basedir}/src/test/java9</compileSourceRoot>
+              </compileSourceRoots>
+            </configuration>
+          </execution>
         </executions>
         <configuration>
-          <source>9</source>
-          <target>9</target>
-          <release>9</release>
           <proc>none</proc>
         </configuration>
       </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <!-- Do not upgrade until 
https://issues.apache.org/jira/browse/SUREFIRE-720 is fixed -->
-        <version>2.13</version>
         <executions>
           <execution>
             <id>test</id>
@@ -107,13 +102,9 @@
           <systemPropertyVariables>
             <java.awt.headless>true</java.awt.headless>
           </systemPropertyVariables>
-          <includes>
-            <include>**/Test*.java</include>
-            <include>**/*Test.java</include>
-          </includes>
-          <excludes>
-            <exclude>**/*FuncTest.java</exclude>
-          </excludes>
+          <jdkToolchain>
+            <version>[9, )</version>
+          </jdkToolchain>
         </configuration>
       </plugin>
       <plugin>
@@ -138,7 +129,6 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-deploy-plugin</artifactId>
-        <version>${deploy.plugin.version}</version>
         <configuration>
           <skip>true</skip>
         </configuration>
@@ -146,7 +136,6 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-site-plugin</artifactId>
-        <version>${site.plugin.version}</version>
         <configuration>
           <skip>true</skip>
           <skipDeploy>true</skipDeploy>
diff --git a/log4j-api-java9/src/main/java/module-info.java 
b/log4j-api-java9/src/main/java/module-info.java
index 3cb22e02da..34ff69899e 100644
--- a/log4j-api-java9/src/main/java/module-info.java
+++ b/log4j-api-java9/src/main/java/module-info.java
@@ -15,6 +15,8 @@
  * limitations under the license.
  */
 module org.apache.logging.log4j {
+    requires java.base;
+
     exports org.apache.logging.log4j;
     exports org.apache.logging.log4j.message;
     exports org.apache.logging.log4j.simple;
diff --git 
a/log4j-api-java9/src/test/java/org/apache/logging/log4j/util/java9/ProcessIdUtilTest.java
 
b/log4j-api-java9/src/test/java/org/apache/logging/log4j/util/java9/ModuleTest.java
similarity index 60%
copy from 
log4j-api-java9/src/test/java/org/apache/logging/log4j/util/java9/ProcessIdUtilTest.java
copy to 
log4j-api-java9/src/test/java/org/apache/logging/log4j/util/java9/ModuleTest.java
index c0f22f0d45..efc77f2ac3 100644
--- 
a/log4j-api-java9/src/test/java/org/apache/logging/log4j/util/java9/ProcessIdUtilTest.java
+++ 
b/log4j-api-java9/src/test/java/org/apache/logging/log4j/util/java9/ModuleTest.java
@@ -16,16 +16,22 @@
  */
 package org.apache.logging.log4j.util.java9;
 
-import org.apache.logging.log4j.util.ProcessIdUtil;
-import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.lang.reflect.Method;
 
-import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import org.junit.jupiter.api.Test;
 
-public class ProcessIdUtilTest {
+public class ModuleTest {
 
     @Test
-    public void processIdTest() {
-        String processId = ProcessIdUtil.getProcessId();
-        assertNotEquals(processId, ProcessIdUtil.DEFAULT_PROCESSID, "ProcessId 
is default");
+    public void testOnModulePath() {
+        final boolean onModulePath = (boolean) assertDoesNotThrow(() -> {
+            final Class<?> moduleUtil = 
Class.forName("org.apache.logging.log4j.util.java9.ModuleUtil");
+            final Method isOnModulePath = 
moduleUtil.getDeclaredMethod("isOnModulePath");
+            return isOnModulePath.invoke(null);
+        });
+        assertTrue(onModulePath);
     }
 }
diff --git 
a/log4j-api-java9/src/test/java/org/apache/logging/log4j/util/java9/ProcessIdUtilTest.java
 
b/log4j-api-java9/src/test/java/org/apache/logging/log4j/util/java9/ProcessIdUtilTest.java
index c0f22f0d45..1dbff111b5 100644
--- 
a/log4j-api-java9/src/test/java/org/apache/logging/log4j/util/java9/ProcessIdUtilTest.java
+++ 
b/log4j-api-java9/src/test/java/org/apache/logging/log4j/util/java9/ProcessIdUtilTest.java
@@ -16,11 +16,11 @@
  */
 package org.apache.logging.log4j.util.java9;
 
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+
 import org.apache.logging.log4j.util.ProcessIdUtil;
 import org.junit.jupiter.api.Test;
 
-import static org.junit.jupiter.api.Assertions.assertNotEquals;
-
 public class ProcessIdUtilTest {
 
     @Test
diff --git 
a/log4j-api-java9/src/test/java/org/apache/logging/log4j/util/java9/StackLocatorTest.java
 
b/log4j-api-java9/src/test/java/org/apache/logging/log4j/util/java9/StackLocatorTest.java
index 9af0396e7c..9d259a5a1a 100644
--- 
a/log4j-api-java9/src/test/java/org/apache/logging/log4j/util/java9/StackLocatorTest.java
+++ 
b/log4j-api-java9/src/test/java/org/apache/logging/log4j/util/java9/StackLocatorTest.java
@@ -16,13 +16,16 @@
  */
 package org.apache.logging.log4j.util.java9;
 
-import org.apache.logging.log4j.util.StackLocator;
-import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
 
 import java.util.Deque;
 import java.util.Stack;
 
-import static org.junit.jupiter.api.Assertions.*;
+import org.apache.logging.log4j.util.StackLocator;
+import org.junit.jupiter.api.Test;
 
 public class StackLocatorTest {
 
@@ -131,7 +134,7 @@ public class StackLocatorTest {
         final StackTraceElement element = new Foo().foo();
         
assertEquals("org.apache.logging.log4j.util.java9.StackLocatorTest$Foo", 
element.getClassName());
         // The line number below may need adjustment if this file is changed. 
-        assertEquals(97, element.getLineNumber());
+        assertEquals(100, element.getLineNumber());
     }
 
     @Test
diff --git a/log4j-api-java9/src/test/java/module-info.java 
b/log4j-api-java9/src/test/java9/module-info.java
similarity index 100%
copy from log4j-api-java9/src/test/java/module-info.java
copy to log4j-api-java9/src/test/java9/module-info.java
diff --git a/log4j-api-java9/src/test/java/module-info.java 
b/log4j-api-java9/src/test/java9/org/apache/logging/log4j/util/java9/ModuleUtil.java
similarity index 76%
rename from log4j-api-java9/src/test/java/module-info.java
rename to 
log4j-api-java9/src/test/java9/org/apache/logging/log4j/util/java9/ModuleUtil.java
index 761c4be9ee..ff59360a9a 100644
--- a/log4j-api-java9/src/test/java/module-info.java
+++ 
b/log4j-api-java9/src/test/java9/org/apache/logging/log4j/util/java9/ModuleUtil.java
@@ -14,9 +14,14 @@
  * See the license for the specific language governing permissions and
  * limitations under the license.
  */
-open module org.apache.logging.log4j.java9test {
-    exports org.apache.logging.log4j.util.java9;
-    requires org.apache.logging.log4j;
-    requires transitive org.junit.jupiter.engine;
-    requires transitive org.junit.jupiter.api;
+package org.apache.logging.log4j.util.java9;
+
+public class ModuleUtil {
+
+    /**
+     * Used by reflection from a Java 8 test class.
+     */
+    public static boolean isOnModulePath() {
+        return ModuleUtil.class.getModule().isNamed();
+    }
 }

Reply via email to