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>