You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by pk...@apache.org on 2022/10/15 09:08:35 UTC
[logging-log4j2] 01/03: Fix `log4j-api-test` JPMS encapsulation
This is an automated email from the ASF dual-hosted git repository.
pkarwasz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 0210e4feba6a25875fa927139e56b9537a6eeac5
Author: Piotr P. Karwasz <pi...@karwasz.org>
AuthorDate: Fri Oct 14 18:51:54 2022 +0200
Fix `log4j-api-test` JPMS encapsulation
In order for `log4j-api-test` to work as JPMS module, the
`ThreadContextUtilityClass` must be moved and `ThreadContext#init()`
must be public. It is already documented as test-only, so this should be
safe.
It also fixes the dependency on `org.junit.platform.commons`, which does
not export its `util` package to non-JUnit modules.
---
log4j-api-test/pom.xml | 45 +++++++++++++++++++++-
.../{ => test}/ThreadContextUtilityClass.java | 3 +-
.../log4j/test/junit/ThreadContextInitializer.java | 8 ++--
log4j-api-test/src/main/java9/module-info.java | 14 ++++---
.../logging/log4j/NoopThreadContextTest.java | 8 ++--
.../log4j/ThreadContextInheritanceTest.java | 1 +
.../logging/log4j/test/ThreadContextTest.java | 8 ++--
.../org/apache/logging/log4j/ThreadContext.java | 2 +-
pom.xml | 2 +-
9 files changed, 70 insertions(+), 21 deletions(-)
diff --git a/log4j-api-test/pom.xml b/log4j-api-test/pom.xml
index 079a13020f..88b9aa782c 100644
--- a/log4j-api-test/pom.xml
+++ b/log4j-api-test/pom.xml
@@ -104,6 +104,23 @@
</dependencies>
<build>
<plugins>
+ <!-- We add the module descriptor to the source path -->
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>${project.basedir}/src/main/java9</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
@@ -119,6 +136,31 @@
</instructions>
</configuration>
</plugin>
+ <!-- We delete the module descriptor to prevent compiling tests as a module -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-clean-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>remove-module-info</id>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>clean</goal>
+ </goals>
+ <configuration>
+ <excludeDefaultDirectories>true</excludeDefaultDirectories>
+ <filesets>
+ <fileset>
+ <directory>${project.build.outputDirectory}</directory>
+ <includes>
+ <include>module-info.class</include>
+ </includes>
+ </fileset>
+ </filesets>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
@@ -176,8 +218,8 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
- <redirectTestOutputToFile>true</redirectTestOutputToFile>
<forkCount>1</forkCount>
+ <redirectTestOutputToFile>true</redirectTestOutputToFile>
<reuseForks>true</reuseForks>
<runOrder>random</runOrder>
<systemPropertyVariables>
@@ -190,6 +232,7 @@
<junit.jupiter.extensions.autodetection.enabled>true</junit.jupiter.extensions.autodetection.enabled>
<junit.jupiter.testclass.order.default>org.junit.jupiter.api.ClassOrderer$Random</junit.jupiter.testclass.order.default>
</systemPropertyVariables>
+ <useModulePath>false</useModulePath>
</configuration>
</plugin>
</plugins>
diff --git a/log4j-api-test/src/main/java/org/apache/logging/log4j/ThreadContextUtilityClass.java b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/ThreadContextUtilityClass.java
similarity index 98%
rename from log4j-api-test/src/main/java/org/apache/logging/log4j/ThreadContextUtilityClass.java
rename to log4j-api-test/src/main/java/org/apache/logging/log4j/test/ThreadContextUtilityClass.java
index 92dc394309..6f3bffcd5d 100644
--- a/log4j-api-test/src/main/java/org/apache/logging/log4j/ThreadContextUtilityClass.java
+++ b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/ThreadContextUtilityClass.java
@@ -14,7 +14,7 @@
* See the license for the specific language governing permissions and
* limitations under the license.
*/
-package org.apache.logging.log4j;
+package org.apache.logging.log4j.test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -25,6 +25,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.Map;
+import org.apache.logging.log4j.ThreadContext;
import org.apache.logging.log4j.util.Timer;
public class ThreadContextUtilityClass {
diff --git a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/ThreadContextInitializer.java b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/ThreadContextInitializer.java
index 2f3b3e5c70..9cca4ca9b8 100644
--- a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/ThreadContextInitializer.java
+++ b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/ThreadContextInitializer.java
@@ -1,25 +1,25 @@
package org.apache.logging.log4j.test.junit;
import org.apache.logging.log4j.ThreadContext;
-import org.apache.logging.log4j.ThreadContextUtilityClass;
+import org.apache.logging.log4j.test.ThreadContextUtilityClass;
import org.junit.jupiter.api.extension.BeforeAllCallback;
import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.api.extension.ExtensionContext.Store.CloseableResource;
-import org.junit.platform.commons.util.AnnotationUtils;
+import org.junit.platform.commons.support.AnnotationSupport;
class ThreadContextInitializer implements BeforeAllCallback, BeforeEachCallback {
@Override
public void beforeAll(ExtensionContext context) throws Exception {
- if (AnnotationUtils.isAnnotated(context.getRequiredTestClass(), InitializesThreadContext.class)) {
+ if (AnnotationSupport.isAnnotated(context.getRequiredTestClass(), InitializesThreadContext.class)) {
resetThreadContext(context);
}
}
@Override
public void beforeEach(ExtensionContext context) throws Exception {
- if (AnnotationUtils.isAnnotated(context.getRequiredTestMethod(), InitializesThreadContext.class)) {
+ if (AnnotationSupport.isAnnotated(context.getRequiredTestMethod(), InitializesThreadContext.class)) {
resetThreadContext(context);
}
}
diff --git a/log4j-api-test/src/main/java9/module-info.java b/log4j-api-test/src/main/java9/module-info.java
index cbd6a0f32b..3d35fb9fe6 100644
--- a/log4j-api-test/src/main/java9/module-info.java
+++ b/log4j-api-test/src/main/java9/module-info.java
@@ -17,17 +17,21 @@
module org.apache.logging.log4j.test {
exports org.apache.logging.log4j.test;
exports org.apache.logging.log4j.test.junit;
+
opens org.apache.logging.log4j.test.junit to org.junit.platform.commons;
- requires org.apache.commons.lang3;
- requires org.apache.logging.log4j;
+ requires transitive org.apache.logging.log4j;
requires com.fasterxml.jackson.core;
requires com.fasterxml.jackson.databind;
+ requires org.apache.commons.lang3;
requires org.assertj.core;
- requires org.junit.jupiter.api;
+ requires transitive org.hamcrest;
+ requires transitive org.junit.jupiter.api;
requires org.junit.jupiter.engine;
- requires org.junit.jupiter.params;
+ requires transitive org.junit.jupiter.params;
requires org.junit.platform.commons;
requires org.junit.platform.engine;
- requires junit;
+ requires transitive org.junit.platform.launcher;
+ requires org.junitpioneer;
+ requires transitive junit;
}
diff --git a/log4j-api-test/src/test/java/org/apache/logging/log4j/NoopThreadContextTest.java b/log4j-api-test/src/test/java/org/apache/logging/log4j/NoopThreadContextTest.java
index d3aeaad755..58198c7143 100644
--- a/log4j-api-test/src/test/java/org/apache/logging/log4j/NoopThreadContextTest.java
+++ b/log4j-api-test/src/test/java/org/apache/logging/log4j/NoopThreadContextTest.java
@@ -26,13 +26,13 @@ import org.junitpioneer.jupiter.SetSystemProperty;
/**
* Tests {@link ThreadContext}.
*/
-@SetSystemProperty(key = "disableThreadContext", value = "true")
-@SetSystemProperty(key = "disableThreadContextMap", value = "true")
-@InitializesThreadContext
-@UsingThreadContextMap
+@SetSystemProperty(key = "log4j2.disableThreadContext", value = "true")
+@SetSystemProperty(key = "log4j2.disableThreadContextMap", value = "true")
public class NoopThreadContextTest {
@Test
+ @InitializesThreadContext
+ @UsingThreadContextMap
public void testNoop() {
ThreadContext.put("Test", "Test");
final String value = ThreadContext.get("Test");
diff --git a/log4j-api-test/src/test/java/org/apache/logging/log4j/ThreadContextInheritanceTest.java b/log4j-api-test/src/test/java/org/apache/logging/log4j/ThreadContextInheritanceTest.java
index 4c01a25cb4..ddbc97b235 100644
--- a/log4j-api-test/src/test/java/org/apache/logging/log4j/ThreadContextInheritanceTest.java
+++ b/log4j-api-test/src/test/java/org/apache/logging/log4j/ThreadContextInheritanceTest.java
@@ -22,6 +22,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.apache.logging.log4j.spi.DefaultThreadContextMap;
+import org.apache.logging.log4j.test.ThreadContextUtilityClass;
import org.apache.logging.log4j.test.junit.InitializesThreadContext;
import org.apache.logging.log4j.test.junit.UsingThreadContextMap;
import org.apache.logging.log4j.test.junit.UsingThreadContextStack;
diff --git a/log4j-api-test/src/test/java/org/apache/logging/log4j/test/ThreadContextTest.java b/log4j-api-test/src/test/java/org/apache/logging/log4j/test/ThreadContextTest.java
index f46cdacce4..42c7067cf5 100644
--- a/log4j-api-test/src/test/java/org/apache/logging/log4j/test/ThreadContextTest.java
+++ b/log4j-api-test/src/test/java/org/apache/logging/log4j/test/ThreadContextTest.java
@@ -16,19 +16,19 @@
*/
package org.apache.logging.log4j.test;
-import java.lang.Class;
-import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import org.apache.logging.log4j.ThreadContext;
-import org.apache.logging.log4j.ThreadContextUtilityClass;
import org.apache.logging.log4j.test.junit.UsingAnyThreadContext;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
@UsingAnyThreadContext
public class ThreadContextTest {
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java b/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java
index 33940079ed..6f6e8b0748 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java
@@ -209,7 +209,7 @@ public final class ThreadContext {
/**
* <em>Consider private, used for testing.</em>
*/
- static void init() {
+ public static void init() {
ThreadContextMapFactory.init();
contextMap = null;
final PropertiesUtil managerProps = PropertiesUtil.getProperties();
diff --git a/pom.xml b/pom.xml
index 2bf407e49c..a1d381e7a2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -336,7 +336,7 @@
<json-unit.version>2.35.0</json-unit.version>
<junit.version>4.13.2</junit.version>
<junit-jupiter.version>5.9.0</junit-jupiter.version>
- <junit-pioneer.version>1.5.0</junit-pioneer.version>
+ <junit-pioneer.version>1.7.1</junit-pioneer.version>
<kafka.version>1.1.1</kafka.version>
<kubernetes-client.version>4.6.1</kubernetes-client.version>
<lightcouch.version>0.0.6</lightcouch.version>