From 543395bd50c71f7aea272f043fdb989af3d83365 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sat, 12 Apr 2025 20:56:52 -0700 Subject: [PATCH 1/7] Bump JUnit to version 5.12.2 --- examples/src/bld/java/com/example/ExamplesBuild.java | 4 ++-- .../java/rife/bld/extension/JacocoReportOperationBuild.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/src/bld/java/com/example/ExamplesBuild.java b/examples/src/bld/java/com/example/ExamplesBuild.java index 4dd3a0b..cbcbd5a 100644 --- a/examples/src/bld/java/com/example/ExamplesBuild.java +++ b/examples/src/bld/java/com/example/ExamplesBuild.java @@ -25,8 +25,8 @@ public class ExamplesBuild extends Project { repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL); scope(test) - .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 12, 1))) - .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 12, 1))); + .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 12, 2))) + .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 12, 2))); } public static void main(String[] args) { diff --git a/src/bld/java/rife/bld/extension/JacocoReportOperationBuild.java b/src/bld/java/rife/bld/extension/JacocoReportOperationBuild.java index 54a64c4..783d886 100644 --- a/src/bld/java/rife/bld/extension/JacocoReportOperationBuild.java +++ b/src/bld/java/rife/bld/extension/JacocoReportOperationBuild.java @@ -48,8 +48,8 @@ public class JacocoReportOperationBuild extends Project { .include(dependency("org.jacoco", "jacoco", jacocoVersion).exclude("*", "org.jacoco.doc")) .include(dependency("com.uwyn.rife2", "bld", version(2, 2, 1))); scope(test) - .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 12, 1))) - .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 12, 1))) + .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 12, 2))) + .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 12, 2))) .include(dependency("org.assertj", "assertj-core", version(3, 27, 3))); javadocOperation() From fb3832ace9ae0c0040387aebf7d2183a88e50ec9 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sun, 4 May 2025 03:02:36 -0700 Subject: [PATCH 2/7] Bump PMD extension to version 1.2.3 --- lib/bld/bld-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/bld/bld-wrapper.properties b/lib/bld/bld-wrapper.properties index b8fd71b..e6f9660 100644 --- a/lib/bld/bld-wrapper.properties +++ b/lib/bld/bld-wrapper.properties @@ -2,6 +2,6 @@ bld.downloadExtensionJavadoc=false bld.downloadExtensionSources=true bld.downloadLocation= bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.5 -bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.2.2 +bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.2.3 bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.version=2.2.1 From 95df2d583825a85a9c184f290bfccd0d46061124 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sun, 4 May 2025 03:44:40 -0700 Subject: [PATCH 3/7] Cleanup tests --- .../bld/extension/JacocoReportOperation.java | 6 +- .../extension/JacocoReportOperationTest.java | 286 +++++++++++------- 2 files changed, 181 insertions(+), 111 deletions(-) diff --git a/src/main/java/rife/bld/extension/JacocoReportOperation.java b/src/main/java/rife/bld/extension/JacocoReportOperation.java index 3d8946e..1fae903 100644 --- a/src/main/java/rife/bld/extension/JacocoReportOperation.java +++ b/src/main/java/rife/bld/extension/JacocoReportOperation.java @@ -411,7 +411,7 @@ public class JacocoReportOperation extends AbstractOperation", "--classfiles", "--csv", @@ -79,131 +81,199 @@ class JacocoReportOperationTest { } - @Test - void executeFailureTest() { - var op = new JacocoReportOperation().fromProject(new Project()); - assertThatCode(op::execute).isInstanceOf(ExitStatusException.class); + @Nested + @DisplayName("Execute Tests") + class ExecuteTests { + JacocoReportOperation newJacocoReportOperation() { + var op = new JacocoReportOperation() + .fromProject(new Project()) + .csv(csv) + .html(html) + .xml(xml) + .classFiles(new File("src/test/resources/Examples.class")) + .sourceFiles(new File("examples/src/main/java")) + .execFiles(new File("src/test/resources/jacoco.exec")); + + deleteOnExit(tempDir.toFile()); + + return op; + } + + @Test + void execute() throws Exception { + newJacocoReportOperation().execute(); + + assertThat(csv).exists(); + assertThat(html).isDirectory(); + assertThat(xml).exists(); + try (var softly = new AutoCloseableSoftAssertions()) { + try (var lines = Files.lines(xml.toPath())) { + softly.assertThat(lines.anyMatch(s -> + s.contains(""))).isTrue(); + } + } + assertThat(Path.of(html.getPath(), "com.example", "Examples.java.html")).exists(); + } + + @Test + void executeFailure() { + var op = new JacocoReportOperation().fromProject(new Project()); + assertThatCode(op::execute).isInstanceOf(ExitStatusException.class); + } } - @Test - void executeTest() throws Exception { - newJacocoReportOperation().execute(); + @Nested + @DisplayName("File Operation Tests") + class FilesOperationTests { + private final File bar = new File("bar"); + private final File foo = new File("foo"); + private final JacocoReportOperation op = new JacocoReportOperation(); - assertThat(csv).exists(); - assertThat(html).isDirectory(); - assertThat(xml).exists(); - try (var softly = new AutoCloseableSoftAssertions()) { - try (var lines = Files.lines(xml.toPath())) { - softly.assertThat(lines.anyMatch(s -> - s.contains(""))).isTrue(); + @Nested + @DisplayName("Class Files Tests") + class ClassFilesTests { + @Test + void classFilesAsFileArray() { + op.classFiles().clear(); + op.classFiles(foo, bar); + assertThat(op.classFiles()).contains(foo, bar); + } + + @Test + void classFilesAsFileList() { + op.classFiles().clear(); + op.classFiles(List.of(foo, bar)); + assertThat(op.classFiles()).contains(foo, bar); + } + + @Test + void classFilesAsPathArray() { + op.classFiles().clear(); + op.classFiles(foo.toPath(), bar.toPath()); + assertThat(op.classFiles()).contains(foo, bar); + } + + @Test + void classFilesAsPathList() { + op.classFiles().clear(); + op.classFilesPaths(List.of(foo.toPath(), bar.toPath())); + assertThat(op.classFiles()).contains(foo, bar); + } + + @Test + void classFilesAsStringArray() { + op.classFiles().clear(); + op.classFiles("foo", "bar"); + assertThat(op.classFiles()).contains(foo, bar); + } + + @Test + void classFilesAsStringList() { + op.classFiles().clear(); + op.classFilesStrings(List.of("foo", "bar")); + assertThat(op.classFiles()).contains(foo, bar); } } - assertThat(Path.of(html.getPath(), "com.example", "Examples.java.html")).exists(); - } + @Nested + @DisplayName("Exec Files Tests") + class ExecFilesTests { + private final File bar = new File("bar"); + private final File foo = new File("foo"); + private final JacocoReportOperation op = new JacocoReportOperation(); - JacocoReportOperation newJacocoReportOperation() { - var op = new JacocoReportOperation() - .fromProject(new Project()) - .csv(csv) - .html(html) - .xml(xml) - .classFiles(new File("src/test/resources/Examples.class")) - .sourceFiles(new File("examples/src/main/java")) - .execFiles(new File("src/test/resources/jacoco.exec")); + @Test + void execFilesAsFileArray() { + op.execFiles().clear(); + op.execFiles(foo, bar); + assertThat(op.execFiles()).contains(foo, bar); + } - deleteOnExit(tempDir.toFile()); + @Test + void execFilesAsFileList() { + op.execFiles().clear(); + op.execFiles(List.of(foo, bar)); + assertThat(op.execFiles()).contains(foo, bar); + } - return op; - } + @Test + void execFilesAsPathArray() { + op.execFiles().clear(); + op.execFiles(foo.toPath(), bar.toPath()); + assertThat(op.execFiles()).contains(foo, bar); + } - @Test - void testClassFiles() { - var foo = new File("foo"); - var bar = new File("bar"); + @Test + void execFilesAsPathList() { + op.execFiles().clear(); + op.execFilesPaths(List.of(foo.toPath(), bar.toPath())); + assertThat(op.execFiles()).contains(foo, bar); + op.execFiles().clear(); + } - var op = new JacocoReportOperation().classFiles("foo", "bar"); - assertThat(op.classFiles()).as("String...").contains(foo, bar); - op.classFiles().clear(); + @Test + void execFilesAsStringArray() { + op.execFiles().clear(); + op.execFiles("foo", "bar"); + assertThat(op.execFiles()).contains(foo, bar); + } - op = op.classFiles(foo, bar); - assertThat(op.classFiles()).as("File...").contains(foo, bar); - op.classFiles().clear(); + @Test + void execFilesAsStringList() { + op.execFiles().clear(); + op.execFilesStrings(List.of("foo", "bar")); + assertThat(op.execFiles()).contains(foo, bar); + } + } - op = op.classFiles(foo.toPath(), bar.toPath()); - assertThat(op.classFiles()).as("Path...").contains(foo, bar); - op.classFiles().clear(); + @Nested + @DisplayName("Source Files Tests") + class SourceFilesTests { + private final File bar = new File("bar"); + private final File foo = new File("foo"); + private final JacocoReportOperation op = new JacocoReportOperation(); - op = op.classFilesStrings(List.of("foo", "bar")); - assertThat(op.classFiles()).as("List(String...)").contains(foo, bar); - op.classFiles().clear(); + @Test + void sourceFilesAsFileArray() { + op.sourceFiles().clear(); + op.sourceFiles(foo, bar); + assertThat(op.sourceFiles()).as("File...").contains(foo, bar); + } - op = op.classFiles(List.of(foo, bar)); - assertThat(op.classFiles()).as("File...").contains(foo, bar); - op.classFiles().clear(); + @Test + void sourceFilesAsFileList() { + op.sourceFiles().clear(); + op.sourceFiles(List.of(foo, bar)); + assertThat(op.sourceFiles()).as("File...").contains(foo, bar); + } - op = op.classFilesPaths(List.of(foo.toPath(), bar.toPath())); - assertThat(op.classFiles()).as("Path...").contains(foo, bar); - op.classFiles().clear(); - } + @Test + void sourceFilesAsPathList() { + op.sourceFiles().clear(); + op.sourceFilesPaths(List.of(foo.toPath(), bar.toPath())); + assertThat(op.sourceFiles()).as("Path...").contains(foo, bar); + } - @Test - void testExecFiles() { - var foo = new File("foo"); - var bar = new File("bar"); + @Test + void sourceFilesAsStringArray() { + op.sourceFiles().clear(); + op.sourceFiles("foo", "bar"); + assertThat(op.sourceFiles()).as("String...").contains(foo, bar); + } - var op = new JacocoReportOperation().execFiles("foo", "bar"); - assertThat(op.execFiles()).as("String...").contains(foo, bar); - op.execFiles().clear(); + @Test + void sourceFilesAsStringList() { + op.sourceFiles().clear(); + op.sourceFilesStrings(List.of("foo", "bar")); + assertThat(op.sourceFiles()).as("List(String...)").contains(foo, bar); + } - op = op.execFiles(foo, bar); - assertThat(op.execFiles()).as("File...").contains(foo, bar); - op.execFiles().clear(); - - op = op.execFiles(foo.toPath(), bar.toPath()); - assertThat(op.execFiles()).as("Path...").contains(foo, bar); - op.execFiles().clear(); - - op = op.execFilesStrings(List.of("foo", "bar")); - assertThat(op.execFiles()).as("List(String...)").contains(foo, bar); - op.execFiles().clear(); - - op = op.execFiles(List.of(foo, bar)); - assertThat(op.execFiles()).as("File...").contains(foo, bar); - op.execFiles().clear(); - - op = op.execFilesPaths(List.of(foo.toPath(), bar.toPath())); - assertThat(op.execFiles()).as("Path...").contains(foo, bar); - op.execFiles().clear(); - } - - @Test - void testSourceFiles() { - var foo = new File("foo"); - var bar = new File("bar"); - - var op = new JacocoReportOperation().sourceFiles("foo", "bar"); - assertThat(op.sourceFiles()).as("String...").contains(foo, bar); - op.sourceFiles().clear(); - - op = op.sourceFiles(foo, bar); - assertThat(op.sourceFiles()).as("File...").contains(foo, bar); - op.sourceFiles().clear(); - - op = op.sourceFiles(foo.toPath(), bar.toPath()); - assertThat(op.sourceFiles()).as("Path...").contains(foo, bar); - op.sourceFiles().clear(); - - op = op.sourceFilesStrings(List.of("foo", "bar")); - assertThat(op.sourceFiles()).as("List(String...)").contains(foo, bar); - op.sourceFiles().clear(); - - op = op.sourceFiles(List.of(foo, bar)); - assertThat(op.sourceFiles()).as("File...").contains(foo, bar); - op.sourceFiles().clear(); - - op = op.sourceFilesPaths(List.of(foo.toPath(), bar.toPath())); - assertThat(op.sourceFiles()).as("Path...").contains(foo, bar); - op.sourceFiles().clear(); + @Test + void sourceFilesPathArray() { + op.sourceFiles().clear(); + op.sourceFiles(foo.toPath(), bar.toPath()); + assertThat(op.sourceFiles()).as("Path...").contains(foo, bar); + } + } } } From 9f9fdac82ec7b60739c229b485b88fa2e14ddec6 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Mon, 19 May 2025 11:43:40 -0700 Subject: [PATCH 4/7] Generate and convert JUnit reports for xunit-viewer --- .../extension/JacocoReportOperationBuild.java | 35 +++++++++++++++++-- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/src/bld/java/rife/bld/extension/JacocoReportOperationBuild.java b/src/bld/java/rife/bld/extension/JacocoReportOperationBuild.java index 783d886..e8e7246 100644 --- a/src/bld/java/rife/bld/extension/JacocoReportOperationBuild.java +++ b/src/bld/java/rife/bld/extension/JacocoReportOperationBuild.java @@ -23,6 +23,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 static rife.bld.dependencies.Repository.*; @@ -34,13 +37,13 @@ public class JacocoReportOperationBuild extends Project { public JacocoReportOperationBuild() { pkg = "rife.bld.extension"; name = "JacocoReportOperation"; - version = version(0, 9, 10); + version = version(0, 9, 11, "SNAPSHOT"); javaRelease = 17; downloadSources = true; autoDownloadPurge = true; - + repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES, RIFE2_SNAPSHOTS); var jacocoVersion = new VersionNumber(0, 8, 13); @@ -107,6 +110,32 @@ public class JacocoReportOperationBuild 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; + } } } From 35f41fb681fd275cd1a9013e7cdba560f34161b2 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Mon, 19 May 2025 11:49:51 -0700 Subject: [PATCH 5/7] Add missing options getters and tests --- .../extension/JacocoReportOperationTest.java | 241 +++++++++++++----- 1 file changed, 180 insertions(+), 61 deletions(-) diff --git a/src/test/java/rife/bld/extension/JacocoReportOperationTest.java b/src/test/java/rife/bld/extension/JacocoReportOperationTest.java index 28dc378..44ead9d 100644 --- a/src/test/java/rife/bld/extension/JacocoReportOperationTest.java +++ b/src/test/java/rife/bld/extension/JacocoReportOperationTest.java @@ -38,16 +38,16 @@ import static org.assertj.core.api.Assertions.assertThatCode; @SuppressWarnings("PMD.AvoidDuplicateLiterals") class JacocoReportOperationTest { - final File csv; - final File html; + final File csvFile; + final File htmlDir; final Path tempDir; - final File xml; + final File xmlFile; JacocoReportOperationTest() throws IOException { tempDir = Files.createTempDirectory("jacoco-test"); - csv = (new File(tempDir.toFile(), "jacoco.csv")); - html = (new File(tempDir.toFile(), "html")); - xml = (new File(tempDir.toFile(), "jacoco.xml")); + csvFile = (new File(tempDir.toFile(), "jacoco.csv")); + htmlDir = (new File(tempDir.toFile(), "html")); + xmlFile = (new File(tempDir.toFile(), "jacoco.xml")); } static void deleteOnExit(File folder) { @@ -84,12 +84,34 @@ class JacocoReportOperationTest { @Nested @DisplayName("Execute Tests") class ExecuteTests { + @Test + void execute() throws Exception { + newJacocoReportOperation().execute(); + + assertThat(csvFile).exists(); + assertThat(htmlDir).isDirectory(); + assertThat(xmlFile).exists(); + try (var softly = new AutoCloseableSoftAssertions()) { + try (var lines = Files.lines(xmlFile.toPath())) { + softly.assertThat(lines.anyMatch(s -> + s.contains(""))).isTrue(); + } + } + assertThat(Path.of(htmlDir.getPath(), "com.example", "Examples.java.html")).exists(); + } + + @Test + void executeFailure() { + var op = new JacocoReportOperation().fromProject(new Project()); + assertThatCode(op::execute).isInstanceOf(ExitStatusException.class); + } + JacocoReportOperation newJacocoReportOperation() { var op = new JacocoReportOperation() .fromProject(new Project()) - .csv(csv) - .html(html) - .xml(xml) + .csv(csvFile) + .html(htmlDir) + .xml(xmlFile) .classFiles(new File("src/test/resources/Examples.class")) .sourceFiles(new File("examples/src/main/java")) .execFiles(new File("src/test/resources/jacoco.exec")); @@ -98,35 +120,114 @@ class JacocoReportOperationTest { return op; } + } + + + @DisplayName("Options Tests") + class OptionsTests { + public static final String FOO = "foo"; + private final File fooFile = new File(FOO); @Test - void execute() throws Exception { - newJacocoReportOperation().execute(); - - assertThat(csv).exists(); - assertThat(html).isDirectory(); - assertThat(xml).exists(); - try (var softly = new AutoCloseableSoftAssertions()) { - try (var lines = Files.lines(xml.toPath())) { - softly.assertThat(lines.anyMatch(s -> - s.contains(""))).isTrue(); - } - } - assertThat(Path.of(html.getPath(), "com.example", "Examples.java.html")).exists(); + void csvAsFile() { + var op = new JacocoReportOperation(); + op.csv(fooFile); + assertThat(op.csv()).isEqualTo(fooFile); } @Test - void executeFailure() { - var op = new JacocoReportOperation().fromProject(new Project()); - assertThatCode(op::execute).isInstanceOf(ExitStatusException.class); + void csvAsPath() { + var fooPath = fooFile.toPath(); + var op = new JacocoReportOperation(); + op.csv(fooPath); + assertThat(op.csv()).isEqualTo(fooFile); + } + + @Test + void csvAsString() { + var op = new JacocoReportOperation(); + op.csv(FOO); + assertThat(op.csv()).isEqualTo(fooFile); + } + + @Test + void htmlAsFile() { + var op = new JacocoReportOperation(); + op.html(fooFile); + assertThat(op.html()).isEqualTo(fooFile); + } + + @Test + void htmlAsPath() { + var fooPath = fooFile.toPath(); + var op = new JacocoReportOperation(); + op.html(fooPath); + assertThat(op.html()).isEqualTo(fooFile); + } + + @Test + void htmlAsString() { + var op = new JacocoReportOperation(); + op.html(FOO); + assertThat(op.html()).isEqualTo(fooFile); + } + + @Test + void quietIsFalse() { + var op = new JacocoReportOperation(); + op.quiet(false); + assertThat(op.isQuiet()).isFalse(); + } + + @Test + void quietIsTrue() { + var op = new JacocoReportOperation(); + op.quiet(true); + assertThat(op.isQuiet()).isTrue(); + } + + @Test + void reportName() { + var op = new JacocoReportOperation(); + op.name(FOO); + assertThat(op.name()).isEqualTo(FOO); + } + + @Test + void tabWidth() { + var op = new JacocoReportOperation(); + op.tabWidth(4); + assertThat(op.tabWidth()).isEqualTo(4); + } + + @Test + void xmlAsFile() { + var op = new JacocoReportOperation(); + op.xml(fooFile); + assertThat(op.xml()).isEqualTo(fooFile); + } + + @Test + void xmlAsPath() { + var fooPath = fooFile.toPath(); + var op = new JacocoReportOperation(); + op.xml(fooPath); + assertThat(op.xml()).isEqualTo(fooFile); + } + + @Test + void xmlAsString() { + var op = new JacocoReportOperation(); + op.xml(FOO); + assertThat(op.xml()).isEqualTo(fooFile); } } @Nested @DisplayName("File Operation Tests") class FilesOperationTests { - private final File bar = new File("bar"); - private final File foo = new File("foo"); + private final File barFile = new File("bar"); + private final File fooFile = new File("foo"); private final JacocoReportOperation op = new JacocoReportOperation(); @Nested @@ -135,144 +236,162 @@ class JacocoReportOperationTest { @Test void classFilesAsFileArray() { op.classFiles().clear(); - op.classFiles(foo, bar); - assertThat(op.classFiles()).contains(foo, bar); + assertThat(op.classFiles()).isEmpty(); + op.classFiles(fooFile, barFile); + assertThat(op.classFiles()).contains(fooFile, barFile); } @Test void classFilesAsFileList() { op.classFiles().clear(); - op.classFiles(List.of(foo, bar)); - assertThat(op.classFiles()).contains(foo, bar); + assertThat(op.classFiles()).isEmpty(); + op.classFiles(List.of(fooFile, barFile)); + assertThat(op.classFiles()).contains(fooFile, barFile); } @Test void classFilesAsPathArray() { op.classFiles().clear(); - op.classFiles(foo.toPath(), bar.toPath()); - assertThat(op.classFiles()).contains(foo, bar); + assertThat(op.classFiles()).isEmpty(); + op.classFiles(fooFile.toPath(), barFile.toPath()); + assertThat(op.classFiles()).contains(fooFile, barFile); } @Test void classFilesAsPathList() { op.classFiles().clear(); - op.classFilesPaths(List.of(foo.toPath(), bar.toPath())); - assertThat(op.classFiles()).contains(foo, bar); + assertThat(op.classFiles()).isEmpty(); + op.classFilesPaths(List.of(fooFile.toPath(), barFile.toPath())); + assertThat(op.classFiles()).contains(fooFile, barFile); } @Test void classFilesAsStringArray() { op.classFiles().clear(); + assertThat(op.classFiles()).isEmpty(); op.classFiles("foo", "bar"); - assertThat(op.classFiles()).contains(foo, bar); + assertThat(op.classFiles()).contains(fooFile, barFile); } @Test void classFilesAsStringList() { op.classFiles().clear(); + assertThat(op.classFiles()).isEmpty(); op.classFilesStrings(List.of("foo", "bar")); - assertThat(op.classFiles()).contains(foo, bar); + assertThat(op.classFiles()).contains(fooFile, barFile); } } @Nested @DisplayName("Exec Files Tests") class ExecFilesTests { - private final File bar = new File("bar"); - private final File foo = new File("foo"); + private final File barFile = new File("bar"); + private final File fooFile = new File("foo"); private final JacocoReportOperation op = new JacocoReportOperation(); @Test void execFilesAsFileArray() { op.execFiles().clear(); - op.execFiles(foo, bar); - assertThat(op.execFiles()).contains(foo, bar); + assertThat(op.execFiles()).isEmpty(); + op.execFiles(fooFile, barFile); + assertThat(op.execFiles()).contains(fooFile, barFile); } @Test void execFilesAsFileList() { op.execFiles().clear(); - op.execFiles(List.of(foo, bar)); - assertThat(op.execFiles()).contains(foo, bar); + assertThat(op.execFiles()).isEmpty(); + op.execFiles(List.of(fooFile, barFile)); + assertThat(op.execFiles()).contains(fooFile, barFile); } @Test void execFilesAsPathArray() { op.execFiles().clear(); - op.execFiles(foo.toPath(), bar.toPath()); - assertThat(op.execFiles()).contains(foo, bar); + assertThat(op.execFiles()).isEmpty(); + op.execFiles(fooFile.toPath(), barFile.toPath()); + assertThat(op.execFiles()).contains(fooFile, barFile); } @Test void execFilesAsPathList() { op.execFiles().clear(); - op.execFilesPaths(List.of(foo.toPath(), bar.toPath())); - assertThat(op.execFiles()).contains(foo, bar); + assertThat(op.execFiles()).isEmpty(); + op.execFilesPaths(List.of(fooFile.toPath(), barFile.toPath())); + assertThat(op.execFiles()).contains(fooFile, barFile); op.execFiles().clear(); } @Test void execFilesAsStringArray() { op.execFiles().clear(); + assertThat(op.execFiles()).isEmpty(); op.execFiles("foo", "bar"); - assertThat(op.execFiles()).contains(foo, bar); + assertThat(op.execFiles()).contains(fooFile, barFile); } @Test void execFilesAsStringList() { op.execFiles().clear(); + assertThat(op.execFiles()).isEmpty(); op.execFilesStrings(List.of("foo", "bar")); - assertThat(op.execFiles()).contains(foo, bar); + assertThat(op.execFiles()).contains(fooFile, barFile); } } @Nested @DisplayName("Source Files Tests") class SourceFilesTests { - private final File bar = new File("bar"); - private final File foo = new File("foo"); + private final File barFile = new File("bar"); + private final File fooFile = new File("foo"); private final JacocoReportOperation op = new JacocoReportOperation(); @Test void sourceFilesAsFileArray() { op.sourceFiles().clear(); - op.sourceFiles(foo, bar); - assertThat(op.sourceFiles()).as("File...").contains(foo, bar); + assertThat(op.sourceFiles()).isEmpty(); + op.sourceFiles(fooFile, barFile); + assertThat(op.sourceFiles()).as("File...").contains(fooFile, barFile); } @Test void sourceFilesAsFileList() { op.sourceFiles().clear(); - op.sourceFiles(List.of(foo, bar)); - assertThat(op.sourceFiles()).as("File...").contains(foo, bar); + assertThat(op.sourceFiles()).isEmpty(); + op.sourceFiles(List.of(fooFile, barFile)); + assertThat(op.sourceFiles()).as("File...").contains(fooFile, barFile); } @Test void sourceFilesAsPathList() { op.sourceFiles().clear(); - op.sourceFilesPaths(List.of(foo.toPath(), bar.toPath())); - assertThat(op.sourceFiles()).as("Path...").contains(foo, bar); + assertThat(op.sourceFiles()).isEmpty(); + op.sourceFilesPaths(List.of(fooFile.toPath(), barFile.toPath())); + assertThat(op.sourceFiles()).as("Path...").contains(fooFile, barFile); } @Test void sourceFilesAsStringArray() { op.sourceFiles().clear(); + assertThat(op.sourceFiles()).isEmpty(); op.sourceFiles("foo", "bar"); - assertThat(op.sourceFiles()).as("String...").contains(foo, bar); + assertThat(op.sourceFiles()).as("String...").contains(fooFile, barFile); } @Test void sourceFilesAsStringList() { op.sourceFiles().clear(); + assertThat(op.sourceFiles()).isEmpty(); op.sourceFilesStrings(List.of("foo", "bar")); - assertThat(op.sourceFiles()).as("List(String...)").contains(foo, bar); + assertThat(op.sourceFiles()).as("List(String...)").contains(fooFile, barFile); } @Test void sourceFilesPathArray() { op.sourceFiles().clear(); - op.sourceFiles(foo.toPath(), bar.toPath()); - assertThat(op.sourceFiles()).as("Path...").contains(foo, bar); + assertThat(op.sourceFiles()).isEmpty(); + op.sourceFiles(fooFile.toPath(), barFile.toPath()); + assertThat(op.sourceFiles()).as("Path...").contains(fooFile, barFile); } } } From 88bda60551644712da25614bbe51f58289c70328 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Mon, 19 May 2025 11:50:24 -0700 Subject: [PATCH 6/7] Add test tool options --- .../bld/extension/JacocoReportOperation.java | 112 ++++++++++++++++++ .../extension/JacocoReportOperationTest.java | 21 ++++ 2 files changed, 133 insertions(+) diff --git a/src/main/java/rife/bld/extension/JacocoReportOperation.java b/src/main/java/rife/bld/extension/JacocoReportOperation.java index 1fae903..c135439 100644 --- a/src/main/java/rife/bld/extension/JacocoReportOperation.java +++ b/src/main/java/rife/bld/extension/JacocoReportOperation.java @@ -61,6 +61,10 @@ public class JacocoReportOperation extends AbstractOperation sourceFiles_ = new ArrayList<>(); + /** + * The test tool options. + */ + final private Collection testToolOptions_ = new ArrayList<>(); /** * The location of the CSV report. */ @@ -212,6 +216,15 @@ public class JacocoReportOperation extends AbstractOperation Date: Mon, 19 May 2025 11:50:48 -0700 Subject: [PATCH 7/7] Minor cleanups --- .github/workflows/bld.yml | 3 +-- .idea/misc.xml | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/bld.yml b/.github/workflows/bld.yml index 6dc0235..ee59c37 100644 --- a/.github/workflows/bld.yml +++ b/.github/workflows/bld.yml @@ -7,7 +7,6 @@ jobs: strategy: matrix: java-version: [ 17, 21, 24 ] - kotlin-version: [ 1.9.25, 2.0.21, 2.1.20 ] os: [ ubuntu-latest, windows-latest, macos-latest ] runs-on: ${{ matrix.os }} @@ -36,4 +35,4 @@ jobs: run: ./bld download - name: Run tests - run: ./bld compile test \ No newline at end of file + run: ./bld compile test diff --git a/.idea/misc.xml b/.idea/misc.xml index b646895..7592f20 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -45,7 +45,7 @@