Generate and convert JUnit reports for xunit-viewer

This commit is contained in:
Erik C. Thauvin 2025-05-28 15:40:09 -07:00
parent e69d4b1176
commit f8968dbd04
Signed by: erik
GPG key ID: 776702A6A2DA330E
2 changed files with 37 additions and 13 deletions

View file

@ -22,6 +22,9 @@ import rife.bld.publish.PublishDeveloper;
import rife.bld.publish.PublishLicense; import rife.bld.publish.PublishLicense;
import rife.bld.publish.PublishScm; 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.List;
import java.util.Locale; import java.util.Locale;
@ -105,7 +108,33 @@ public class DetektOperationBuild extends Project {
.command("scripts/cliargs.sh") .command("scripts/cliargs.sh")
.execute(); .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;
}
} }

View file

@ -35,7 +35,6 @@ import java.nio.file.Files;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.ConsoleHandler; import java.util.logging.ConsoleHandler;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -44,19 +43,15 @@ import static org.assertj.core.api.Assertions.*;
@SuppressWarnings("PMD.AvoidDuplicateLiterals") @SuppressWarnings("PMD.AvoidDuplicateLiterals")
class DetektOperationTests { class DetektOperationTests {
private static final AtomicBoolean FIRST_TIME = new AtomicBoolean(true);
@BeforeAll @BeforeAll
static void beforeAll() { static void beforeAll() {
if (FIRST_TIME.getAndSet(false)) { var level = Level.ALL;
var level = Level.ALL; var logger = Logger.getLogger("rife.bld.extension");
var logger = Logger.getLogger("rife.bld.extension"); var consoleHandler = new ConsoleHandler();
var consoleHandler = new ConsoleHandler(); consoleHandler.setLevel(level);
consoleHandler.setLevel(level); logger.addHandler(consoleHandler);
logger.addHandler(consoleHandler); logger.setLevel(level);
logger.setLevel(level); logger.setUseParentHandlers(false);
logger.setUseParentHandlers(false);
}
} }
static void deleteOnExit(File folder) { static void deleteOnExit(File folder) {