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;