diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index de889ab..0914eb6 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -12,7 +12,7 @@ jobs:
strategy:
matrix:
platform: [ubuntu-latest, macos-latest, windows-latest]
- jdk: [17, 21]
+ jdk: [17, 21, 25]
runs-on: ${{ matrix.platform }}
name: on ${{ matrix.platform }} with JDK ${{ matrix.jdk }}
@@ -22,7 +22,7 @@ jobs:
- name: Set up JDK ${{ matrix.jdk }}
uses: actions/setup-java@v5
with:
- distribution: 'temurin'
+ distribution: 'corretto'
java-version: '${{ matrix.jdk }}'
check-latest: true
cache: 'maven'
diff --git a/pom.xml b/pom.xml
index f946e94..e0e70e9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
org.jvnet.hudson.plugins
analysis-pom
- 10.2715.v615cde31c843
+ 10.2792.v9dd09fb_3c255
diff --git a/src/test/java/io/jenkins/plugins/util/AgentFileVisitorTest.java b/src/test/java/io/jenkins/plugins/util/AgentFileVisitorTest.java
index f571c7e..ce43d62 100644
--- a/src/test/java/io/jenkins/plugins/util/AgentFileVisitorTest.java
+++ b/src/test/java/io/jenkins/plugins/util/AgentFileVisitorTest.java
@@ -1,11 +1,5 @@
package io.jenkins.plugins.util;
-import java.io.File;
-import java.io.Serial;
-import java.nio.charset.Charset;
-import java.nio.file.Path;
-import java.util.Optional;
-
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
@@ -17,6 +11,12 @@
import edu.hm.hafner.util.VisibleForTesting;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+import java.io.File;
+import java.io.Serial;
+import java.nio.charset.Charset;
+import java.nio.file.Path;
+import java.util.Optional;
+
import io.jenkins.plugins.util.AgentFileVisitor.FileSystemFacade;
import io.jenkins.plugins.util.AgentFileVisitor.FileVisitorResult;
import io.jenkins.plugins.util.AgentFileVisitorTest.StringScanner;
@@ -191,6 +191,7 @@ protected StringScanner(final String filePattern, final String encoding, final b
}
@Override
+ @SuppressWarnings("PMD.AssignmentInOperand")
protected Optional processFile(final Path file, final Charset charset, final FilteredLog log) {
return Optional.of(CONTENT + counter++);
}
diff --git a/src/test/java/io/jenkins/plugins/util/LogHandlerTest.java b/src/test/java/io/jenkins/plugins/util/LogHandlerTest.java
index 17be6c8..a0852dd 100644
--- a/src/test/java/io/jenkins/plugins/util/LogHandlerTest.java
+++ b/src/test/java/io/jenkins/plugins/util/LogHandlerTest.java
@@ -1,14 +1,16 @@
package io.jenkins.plugins.util;
-import java.io.ByteArrayOutputStream;
-import java.io.PrintStream;
-
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import edu.hm.hafner.util.FilteredLog;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.nio.charset.StandardCharsets;
+
import hudson.model.TaskListener;
import static org.assertj.core.api.Assertions.*;
@@ -28,60 +30,66 @@ class LogHandlerTest {
@ValueSource(booleans = {true, false})
@ParameterizedTest(name = "Log some messages and evaluate quiet flag value (quiet = {0})")
- void shouldLogInfoAndErrorMessage(final boolean quiet) {
- var outputStream = new ByteArrayOutputStream();
- var printStream = new PrintStream(outputStream);
- var taskListener = createTaskListener(printStream);
-
- var logger = new FilteredLog("Title");
- logger.logInfo(NOT_SHOWN);
- logger.logError(NOT_SHOWN);
-
- var logHandler = new LogHandler(taskListener, LOG_HANDLER_NAME, logger);
- logHandler.setQuiet(quiet);
-
- logger.logInfo(MESSAGE);
- logger.logError(MESSAGE);
-
- logHandler.log(logger);
-
- if (quiet) {
- assertThat(outputStream.toString()).isEmpty();
- }
- else {
- assertThat(outputStream).hasToString(String.format(
- "[%s] [-ERROR-] %s%n"
- + "[%s] %s%n",
- LOG_HANDLER_NAME, MESSAGE, LOG_HANDLER_NAME, MESSAGE));
- }
- logger.logInfo(ADDITIONAL_MESSAGE);
- logger.logError(ADDITIONAL_MESSAGE);
- logHandler.log(logger);
-
- if (quiet) {
- assertThat(outputStream.toString()).isEmpty();
- }
- else {
- assertThat(outputStream).hasToString(String.format(
- "[%s] [-ERROR-] %s%n"
- + "[%s] %s%n"
- + "[%s] [-ERROR-] %s%n"
- + "[%s] %s%n",
- LOG_HANDLER_NAME, MESSAGE, LOG_HANDLER_NAME, MESSAGE, LOG_HANDLER_NAME,
- ADDITIONAL_MESSAGE, LOG_HANDLER_NAME, ADDITIONAL_MESSAGE));
+ void shouldLogInfoAndErrorMessage(final boolean quiet) throws IOException {
+ try (var outputStream = new ByteArrayOutputStream();
+ var printStream = wrapStream(outputStream)) {
+ var taskListener = createTaskListener(printStream);
+
+ var logger = new FilteredLog("Title");
+ logger.logInfo(NOT_SHOWN);
+ logger.logError(NOT_SHOWN);
+
+ var logHandler = new LogHandler(taskListener, LOG_HANDLER_NAME, logger);
+ logHandler.setQuiet(quiet);
+
+ logger.logInfo(MESSAGE);
+ logger.logError(MESSAGE);
+
+ logHandler.log(logger);
+
+ if (quiet) {
+ assertThat(outputStream.toString(StandardCharsets.UTF_8)).isEmpty();
+ }
+ else {
+ assertThat(outputStream).hasToString(String.format(
+ "[%s] [-ERROR-] %s%n"
+ + "[%s] %s%n",
+ LOG_HANDLER_NAME, MESSAGE, LOG_HANDLER_NAME, MESSAGE));
+ }
+ logger.logInfo(ADDITIONAL_MESSAGE);
+ logger.logError(ADDITIONAL_MESSAGE);
+ logHandler.log(logger);
+
+ if (quiet) {
+ assertThat(outputStream.toString(StandardCharsets.UTF_8)).isEmpty();
+ }
+ else {
+ assertThat(outputStream).hasToString(String.format(
+ "[%s] [-ERROR-] %s%n"
+ + "[%s] %s%n"
+ + "[%s] [-ERROR-] %s%n"
+ + "[%s] %s%n",
+ LOG_HANDLER_NAME, MESSAGE, LOG_HANDLER_NAME, MESSAGE, LOG_HANDLER_NAME,
+ ADDITIONAL_MESSAGE, LOG_HANDLER_NAME, ADDITIONAL_MESSAGE));
+ }
}
}
@Test
- void shouldLogFormattedMessage() {
- var outputStream = new ByteArrayOutputStream();
- var printStream = new PrintStream(outputStream);
- var taskListener = createTaskListener(printStream);
- var logHandler = new LogHandler(taskListener, LOG_HANDLER_NAME);
+ void shouldLogFormattedMessage() throws IOException {
+ try (var outputStream = new ByteArrayOutputStream();
+ var printStream = wrapStream(outputStream)) {
+ var taskListener = createTaskListener(printStream);
+ var logHandler = new LogHandler(taskListener, LOG_HANDLER_NAME);
+
+ logHandler.log(LOGGER_MESSAGE);
- logHandler.log(LOGGER_MESSAGE);
+ assertThat(outputStream).hasToString("[%s] %s%n".formatted(LOG_HANDLER_NAME, LOGGER_MESSAGE));
+ }
+ }
- assertThat(outputStream).hasToString("[%s] %s%n".formatted(LOG_HANDLER_NAME, LOGGER_MESSAGE));
+ private PrintStream wrapStream(final ByteArrayOutputStream outputStream) {
+ return new PrintStream(outputStream, true, StandardCharsets.UTF_8);
}
private TaskListener createTaskListener(final PrintStream printStream) {