From f8968dbd04dd092fc1f195e6397354df6e9377e4 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Wed, 28 May 2025 15:40:09 -0700 Subject: [PATCH] Generate and convert JUnit reports for xunit-viewer --- .../bld/extension/DetektOperationBuild.java | 31 ++++++++++++++++++- .../bld/extension/DetektOperationTests.java | 19 +++++------- 2 files changed, 37 insertions(+), 13 deletions(-) diff --git a/src/bld/java/rife/bld/extension/DetektOperationBuild.java b/src/bld/java/rife/bld/extension/DetektOperationBuild.java index 9652cb7..bff619d 100644 --- a/src/bld/java/rife/bld/extension/DetektOperationBuild.java +++ b/src/bld/java/rife/bld/extension/DetektOperationBuild.java @@ -22,6 +22,9 @@ import rife.bld.publish.PublishDeveloper; import rife.bld.publish.PublishLicense; import rife.bld.publish.PublishScm; +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.List; import java.util.Locale; @@ -105,7 +108,33 @@ public class DetektOperationBuild extends Project { .command("scripts/cliargs.sh") .execute(); } - super.test(); + + var testResultsDir = "build/test-results/test/"; + var op = testOperation().fromProject(this); + op.testToolOptions().reportsDir(new File(testResultsDir)); + + Exception ex = null; + try { + op.execute(); + } catch (Exception e) { + ex = e; + } + + var xunitViewer = new File("/usr/bin/xunit-viewer"); + if (xunitViewer.exists() && xunitViewer.canExecute()) { + var reportsDir = "build/reports/tests/test/"; + + Files.createDirectories(Path.of(reportsDir)); + + new ExecOperation() + .fromProject(this) + .command(xunitViewer.getPath(), "-r", testResultsDir, "-o", reportsDir + "index.html") + .execute(); + } + + if (ex != null) { + throw ex; + } } diff --git a/src/test/java/rife/bld/extension/DetektOperationTests.java b/src/test/java/rife/bld/extension/DetektOperationTests.java index f26ee0f..8c9a40a 100644 --- a/src/test/java/rife/bld/extension/DetektOperationTests.java +++ b/src/test/java/rife/bld/extension/DetektOperationTests.java @@ -35,7 +35,6 @@ import java.nio.file.Files; import java.nio.file.Paths; import java.util.List; import java.util.Objects; -import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.ConsoleHandler; import java.util.logging.Level; import java.util.logging.Logger; @@ -44,19 +43,15 @@ import static org.assertj.core.api.Assertions.*; @SuppressWarnings("PMD.AvoidDuplicateLiterals") class DetektOperationTests { - private static final AtomicBoolean FIRST_TIME = new AtomicBoolean(true); - @BeforeAll static void beforeAll() { - if (FIRST_TIME.getAndSet(false)) { - var level = Level.ALL; - var logger = Logger.getLogger("rife.bld.extension"); - var consoleHandler = new ConsoleHandler(); - consoleHandler.setLevel(level); - logger.addHandler(consoleHandler); - logger.setLevel(level); - logger.setUseParentHandlers(false); - } + var level = Level.ALL; + var logger = Logger.getLogger("rife.bld.extension"); + var consoleHandler = new ConsoleHandler(); + consoleHandler.setLevel(level); + logger.addHandler(consoleHandler); + logger.setLevel(level); + logger.setUseParentHandlers(false); } static void deleteOnExit(File folder) {