This is an automated email from the ASF dual-hosted git repository.
pkarwasz pushed a commit to branch 2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
The following commit(s) were added to refs/heads/2.x by this push:
new 0bd1572b7c Improve inheritance of JUnit annotations
0bd1572b7c is described below
commit 0bd1572b7c491f81b6702329b8fb85317418cb2b
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 | 46 +++++++++++++++-------
2 files changed, 35 insertions(+), 33 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 8d5184079b..c70724f5e4 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.junit.jupiter.api.extension.BeforeAllCallback;
import org.junit.jupiter.api.extension.BeforeEachCallback;
@@ -39,14 +37,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
@@ -67,14 +59,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 a51d73ee47..1201c57e9b 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.lang.reflect.Method;
+import java.net.URISyntaxException;
+import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.apache.logging.log4j.core.LoggerContext;
@@ -28,8 +30,10 @@ import org.junit.jupiter.api.extension.AfterEachCallback;
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.ExtensionContextException;
import org.junit.jupiter.api.extension.ParameterContext;
import org.junit.jupiter.api.extension.ParameterResolutionException;
+import org.junit.platform.commons.support.AnnotationSupport;
class LoggerContextResolver extends TypeBasedParameterResolver<LoggerContext>
implements BeforeAllCallback,
AfterAllCallback, BeforeEachCallback, AfterEachCallback {
@@ -41,11 +45,11 @@ class LoggerContextResolver extends
TypeBasedParameterResolver<LoggerContext> im
@Override
public void beforeAll(ExtensionContext context) throws Exception {
final Class<?> testClass = context.getRequiredTestClass();
- final LoggerContextSource testSource =
testClass.getAnnotation(LoggerContextSource.class);
- if (testSource != null) {
- final LoggerContextConfig config = new
LoggerContextConfig(testSource, context);
- getTestClassStore(context).put(LoggerContext.class, config);
- }
+ AnnotationSupport.findAnnotation(testClass, LoggerContextSource.class)
+ .ifPresent(testSource -> {
+ final LoggerContextConfig config = new
LoggerContextConfig(testSource, context);
+ getTestClassStore(context).put(LoggerContext.class,
config);
+ });
}
@Override
@@ -60,7 +64,7 @@ class LoggerContextResolver extends
TypeBasedParameterResolver<LoggerContext> im
@Override
public void beforeEach(ExtensionContext context) throws Exception {
final Class<?> testClass = context.getRequiredTestClass();
- if (testClass.isAnnotationPresent(LoggerContextSource.class)) {
+ if (AnnotationSupport.isAnnotated(testClass,
LoggerContextSource.class)) {
final LoggerContextConfig config =
getTestClassStore(context).get(LoggerContext.class, LoggerContextConfig.class);
if (config == null) {
throw new IllegalStateException(
@@ -71,14 +75,14 @@ class LoggerContextResolver extends
TypeBasedParameterResolver<LoggerContext> im
config.reconfigure();
}
}
- final LoggerContextSource source =
context.getRequiredTestMethod().getAnnotation(LoggerContextSource.class);
- if (source != null) {
- final LoggerContextConfig config = new LoggerContextConfig(source,
context);
- if (config.reconfigurationPolicy ==
ReconfigurationPolicy.BEFORE_EACH) {
- config.reconfigure();
- }
- getTestInstanceStore(context).put(LoggerContext.class, config);
- }
+ AnnotationSupport.findAnnotation(context.getRequiredTestMethod(),
LoggerContextSource.class)
+ .ifPresent(source -> {
+ final LoggerContextConfig config = new
LoggerContextConfig(source, context);
+ if (config.reconfigurationPolicy ==
ReconfigurationPolicy.BEFORE_EACH) {
+ config.reconfigure();
+ }
+ getTestInstanceStore(context).put(LoggerContext.class,
config);
+ });
}
@Override
@@ -91,7 +95,7 @@ class LoggerContextResolver extends
TypeBasedParameterResolver<LoggerContext> im
}
// reloadable variant
final Class<?> testClass = context.getRequiredTestClass();
- if (testClass.isAnnotationPresent(LoggerContextSource.class)) {
+ if (AnnotationSupport.isAnnotated(testClass,
LoggerContextSource.class)) {
final LoggerContextConfig config =
getTestClassStore(context).get(LoggerContext.class, LoggerContextConfig.class);
if (config == null) {
throw new IllegalStateException(
@@ -147,6 +151,18 @@ class LoggerContextResolver extends
TypeBasedParameterResolver<LoggerContext> im
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;