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

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


The following commit(s) were added to refs/heads/main by this push:
     new 5242010224 Improve inheritance of JUnit annotations
5242010224 is described below

commit 524201022430d247a93b637315cf12d0404c4dac
Author: Piotr P. Karwasz <[email protected]>
AuthorDate: Thu Sep 21 08:42:50 2023 +0200

    Improve inheritance of JUnit annotations
---
 .../log4j/test/junit/TestPropertyResolver.java     | 22 +++-------------
 .../core/test/junit/LoggerContextResolver.java     | 29 ++++++++++++++++------
 2 files changed, 26 insertions(+), 25 deletions(-)

diff --git 
a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/TestPropertyResolver.java
 
b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/TestPropertyResolver.java
index 0e0a0d60eb..81b44f3729 100644
--- 
a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/TestPropertyResolver.java
+++ 
b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/TestPropertyResolver.java
@@ -16,8 +16,6 @@
  */
 package org.apache.logging.log4j.test.junit;
 
-import java.util.List;
-
 import org.apache.logging.log4j.test.TestProperties;
 import org.apache.logging.log4j.util.ReflectionUtil;
 import org.junit.jupiter.api.extension.BeforeAllCallback;
@@ -40,14 +38,8 @@ public class TestPropertyResolver extends 
TypeBasedParameterResolver<TestPropert
     @Override
     public void beforeEach(final ExtensionContext context) throws Exception {
         final TestProperties props = 
TestPropertySource.createProperties(context);
-        final List<SetTestProperty> setProperties = 
AnnotationSupport.findRepeatableAnnotations(
-                context.getRequiredTestMethod(),
-                SetTestProperty.class);
-        if (setProperties.size() > 0) {
-            for (final SetTestProperty setProperty : setProperties) {
-                props.setProperty(setProperty.key(), setProperty.value());
-            }
-        }
+        
AnnotationSupport.findRepeatableAnnotations(context.getRequiredTestMethod(), 
SetTestProperty.class)
+                .forEach(setProperty -> props.setProperty(setProperty.key(), 
setProperty.value()));
         final Class<?> testClass = context.getRequiredTestClass();
         final Object testInstance = context.getRequiredTestInstance();
         ReflectionSupport
@@ -61,14 +53,8 @@ public class TestPropertyResolver extends 
TypeBasedParameterResolver<TestPropert
     @Override
     public void beforeAll(final ExtensionContext context) throws Exception {
         final TestProperties props = 
TestPropertySource.createProperties(context);
-        final List<SetTestProperty> setProperties = 
AnnotationSupport.findRepeatableAnnotations(
-                context.getRequiredTestClass(),
-                SetTestProperty.class);
-        if (setProperties.size() > 0) {
-            for (final SetTestProperty setProperty : setProperties) {
-                props.setProperty(setProperty.key(), setProperty.value());
-            }
-        }
+        
AnnotationSupport.findRepeatableAnnotations(context.getRequiredTestClass(), 
SetTestProperty.class)
+                .forEach(setProperty -> props.setProperty(setProperty.key(), 
setProperty.value()));
         final Class<?> testClass = context.getRequiredTestClass();
         ReflectionSupport
         .findFields(testClass,
diff --git 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/LoggerContextResolver.java
 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/LoggerContextResolver.java
index a0f82e6fdf..12f6830ac8 100644
--- 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/LoggerContextResolver.java
+++ 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/LoggerContextResolver.java
@@ -17,6 +17,8 @@
 package org.apache.logging.log4j.core.test.junit;
 
 import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
@@ -35,6 +37,7 @@ import org.junit.jupiter.api.extension.BeforeEachCallback;
 import org.junit.jupiter.api.extension.ExtensionContext;
 import org.junit.jupiter.api.extension.ExtensionContext.Namespace;
 import org.junit.jupiter.api.extension.ExtensionContext.Store;
+import org.junit.jupiter.api.extension.ExtensionContextException;
 import org.junit.jupiter.api.extension.ParameterContext;
 import org.junit.jupiter.api.extension.ParameterResolutionException;
 import org.junit.platform.commons.support.AnnotationSupport;
@@ -139,14 +142,26 @@ class LoggerContextResolver extends 
TypeBasedParameterResolver<LoggerContext> im
         return context;
     }
 
-    private static String getConfigLocation(final LoggerContextSource source,
-                                            final ExtensionContext 
extensionContext) {
-        final String value = source.value();
-        if (value.isEmpty()) {
-            return 
extensionContext.getRequiredTestClass().getName().replaceAll("[.$]", "/") + 
".xml";
+        private static String getConfigLocation(final LoggerContextSource 
source,
+                                                final ExtensionContext 
extensionContext) {
+            final String value = source.value();
+            if (value.isEmpty()) {
+                Class<?> clazz = extensionContext.getRequiredTestClass();
+                while (clazz != null) {
+                    final URL url = clazz.getResource(clazz.getSimpleName() + 
".xml");
+                    if (url != null) {
+                        try {
+                            return url.toURI().toString();
+                        } catch (URISyntaxException e) {
+                            throw new ExtensionContextException("An error 
occurred accessing the configuration.", e);
+                        }
+                    }
+                    clazz = clazz.getSuperclass();
+                }
+                return 
extensionContext.getRequiredTestClass().getName().replaceAll("[.$]", "/") + 
".xml";
+            }
+            return value;
         }
-        return value;
-    }
 
     private static final class ContextHolder implements 
Store.CloseableResource, LoggerContextAccessor {
         private final LoggerContext context;

Reply via email to