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();
+ }
}