gnodet-bot commented on code in PR #12694:
URL: https://github.com/apache/maven/pull/12694#discussion_r4048577406
##########
impl/maven-core/src/test/java/org/apache/maven/internal/impl/DefaultLogTest.java:
##########
@@ -51,13 +54,31 @@ void warnWithSupplierAndThrowableDelegatesToWarn() {
verify(mockLogger).warn("warning message", ex);
}
+ /**
+ * Verify that Log API metadata is set during the log call and
+ * cleared afterwards — no leakage across calls.
+ */
+ @Test
+ void logApiMetadataIsClearedAfterCall() {
+ Logger mockLogger = mock(Logger.class);
+ when(mockLogger.isInfoEnabled()).thenReturn(true);
+ when(mockLogger.getName()).thenReturn("com.example.MyMojo");
+
+ DefaultLog log = new DefaultLog(mockLogger);
+ log.info("test message");
+
+ // After the call completes, metadata should be cleared
+ assertNull(DefaultLog.getLogApiMetadata(), "Log API metadata should be
cleared after the log call");
Review Comment:
**[low] `logApiMetadataIsClearedAfterCall()` is trivially true — never
exercises the cleanup path**
The test calls `log.info("test message")` without setting `reportCapture`.
Inside `withMetadata()`, the guard `ProjectBuildLogAppender.hasReportCapture()`
returns `false`, so the method takes the `else` branch and calls
`logAction.run()` directly — the `LOG_API_METADATA` ThreadLocal is **never
set**. `assertNull(getLogApiMetadata())` therefore passes trivially regardless
of whether the `finally { LOG_API_METADATA.remove(); }` block is correct.
To actually test the cleanup, `reportCapture` must be set before the call
(so `hasReportCapture()` returns `true`) and cleared afterward:
```suggestion
ProjectBuildLogAppender.setReportCapture(event -> {});
try {
log.info("test message");
} finally {
ProjectBuildLogAppender.setReportCapture(null);
}
// After the call completes, metadata should be cleared
assertNull(DefaultLog.getLogApiMetadata(), "Log API metadata should
be cleared after the log call");
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]