diff --git a/lib/bld/bld-wrapper.properties b/lib/bld/bld-wrapper.properties index a040cdc..00938eb 100644 --- a/lib/bld/bld-wrapper.properties +++ b/lib/bld/bld-wrapper.properties @@ -1,11 +1,12 @@ bld.downloadExtensionJavadoc=false bld.downloadExtensionSources=true bld.downloadLocation= -bld.extension-detekt=com.uwyn.rife2:bld-detekt:0.9.9 -bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.3 -bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.4 +bld.extension-detekt=com.uwyn.rife2:bld-detekt:0.9.10-SNAPSHOT +bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.4-SNAPSHOT +bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.5 bld.extension-gv=com.uwyn.rife2:bld-generated-version:1.0.1 -bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.10 +bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.11-SNAPSHOT +bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.1.0-SNAPSHOT bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= bld.version=2.2.1 diff --git a/src/bld/java/net/thauvin/erik/AkismetBuild.java b/src/bld/java/net/thauvin/erik/AkismetBuild.java index 7bb422b..2ada5c7 100644 --- a/src/bld/java/net/thauvin/erik/AkismetBuild.java +++ b/src/bld/java/net/thauvin/erik/AkismetBuild.java @@ -47,6 +47,8 @@ import rife.tools.exceptions.FileUtilsErrorException; import java.io.File; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.List; import java.util.logging.ConsoleHandler; import java.util.logging.Level; @@ -56,6 +58,7 @@ import static rife.bld.dependencies.Repository.*; import static rife.bld.dependencies.Scope.*; public class AkismetBuild extends Project { + static final String TEST_RESULTS_DIR = "build/test-results/test/"; private static final String DETEKT_BASELINE = "config/detekt/baseline.xml"; final File srcMainKotlin = new File(srcMainDirectory(), "kotlin"); @@ -66,8 +69,8 @@ public class AkismetBuild extends Project { javaRelease = 11; - downloadSources = true; autoDownloadPurge = true; + downloadSources = true; repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL); var okHttp = version(4, 12, 0); @@ -201,10 +204,60 @@ public class AkismetBuild extends Project { @BuildCommand(summary = "Generates JaCoCo Reports") public void jacoco() throws Exception { - new JacocoReportOperation() - .fromProject(this) - .sourceFiles(srcMainKotlin) - .execute(); + var op = new JacocoReportOperation().fromProject(this); + op.testToolOptions("--reports-dir=" + TEST_RESULTS_DIR); + + Exception ex = null; + try { + op.execute(); + } catch (Exception e) { + ex = e; + } + + renderWithXunitViewer(); + + if (ex != null) { + throw ex; + } + } + + @BuildCommand(value = "pom-root", summary = "Generates the POM file in the root directory") + public void pomRoot() throws FileUtilsErrorException { + PomBuilder.generateInto(publishOperation().fromProject(this).info(), dependencies(), + new File(workDirectory, "pom.xml")); + } + + private void renderWithXunitViewer() throws Exception { + 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", TEST_RESULTS_DIR, "-o", reportsDir + "index.html") + .execute(); + } + } + + @Override + public void test() throws Exception { + var op = testOperation().fromProject(this); + op.testToolOptions().reportsDir(new File(TEST_RESULTS_DIR)); + + Exception ex = null; + try { + op.execute(); + } catch (Exception e) { + ex = e; + } + + renderWithXunitViewer(); + + if (ex != null) { + throw ex; + } } @Override @@ -232,10 +285,4 @@ public class AkismetBuild extends Project { super.publishLocal(); pomRoot(); } - - @BuildCommand(value = "pom-root", summary = "Generates the POM file in the root directory") - public void pomRoot() throws FileUtilsErrorException { - PomBuilder.generateInto(publishOperation().fromProject(this).info(), dependencies(), - new File(workDirectory, "pom.xml")); - } }