Added tests

This commit is contained in:
Erik C. Thauvin 2023-08-11 19:50:04 -07:00
parent 26c1f11e84
commit 541ed74d9f
7 changed files with 68 additions and 35 deletions

View file

@ -8,6 +8,7 @@ import java.io.IOException;
import java.util.List; import java.util.List;
import static rife.bld.dependencies.Repository.MAVEN_CENTRAL; import static rife.bld.dependencies.Repository.MAVEN_CENTRAL;
import static rife.bld.dependencies.Repository.MAVEN_LOCAL;
import static rife.bld.dependencies.Scope.test; import static rife.bld.dependencies.Scope.test;
public class ExamplesBuild extends Project { public class ExamplesBuild extends Project {
@ -16,7 +17,7 @@ public class ExamplesBuild extends Project {
name = "Examples"; name = "Examples";
version = version(0, 1, 0); version = version(0, 1, 0);
repositories = List.of(MAVEN_CENTRAL); repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL);
scope(test) scope(test)
.include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 9, 3))) .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 9, 3)))
@ -26,13 +27,6 @@ public class ExamplesBuild extends Project {
public static void main(String[] args) { public static void main(String[] args) {
new ExamplesBuild().start(args); new ExamplesBuild().start(args);
} }
// @Override
// public void test() throws Exception {
// super.test();
// jacoco();
// }
@BuildCommand(summary = "Generates Jacoco Reports") @BuildCommand(summary = "Generates Jacoco Reports")
public void jacoco() throws IOException { public void jacoco() throws IOException {
new JacocoReportOperation() new JacocoReportOperation()

View file

@ -53,8 +53,6 @@ public class JacocoReportOperationBuild extends Project {
.include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 10, 0))) .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 10, 0)))
.include(dependency("org.assertj:assertj-joda-time:2.2.0")); .include(dependency("org.assertj:assertj-joda-time:2.2.0"));
testOperation().mainClass("rife.bld.extension.JacocoReportOperationTest");
javadocOperation() javadocOperation()
.javadocOptions() .javadocOptions()
.docLint(NO_MISSING) .docLint(NO_MISSING)
@ -62,7 +60,7 @@ public class JacocoReportOperationBuild extends Project {
publishOperation() publishOperation()
.repository(version.isSnapshot() ? repository("rife2-snapshot") : repository("rife2")) .repository(version.isSnapshot() ? repository("rife2-snapshot") : repository("rife2"))
// .repository(MAVEN_LOCAL) // .repository(MAVEN_LOCAL)
.info() .info()
.groupId("com.uwyn.rife2") .groupId("com.uwyn.rife2")
.artifactId("bld-jacoco-report") .artifactId("bld-jacoco-report")
@ -84,7 +82,7 @@ public class JacocoReportOperationBuild extends Project {
} }
@BuildCommand(summary = "Runs PMD analysis") @BuildCommand(summary = "Runs PMD analysis")
public void pmd() throws Exception { public void pmd() {
new PmdOperation() new PmdOperation()
.fromProject(this) .fromProject(this)
.failOnViolation(true) .failOnViolation(true)

View file

@ -142,12 +142,13 @@ public class JacocoReportOperation extends AbstractOperation<JacocoReportOperati
@Override @Override
public void execute() throws IOException { public void execute() throws IOException {
if ((project == null) && LOGGER.isLoggable(Level.SEVERE)) { if ((project == null) && LOGGER.isLoggable(Level.SEVERE)) {
LOGGER.severe("A project and version must be specified."); LOGGER.severe("A project must be specified.");
} else { } else {
var buildJacocoReportsDir = Path.of(project.buildDirectory().getPath(), "reports", "jacoco", "test").toFile(); var buildJacocoReportsDir = Path.of(project.buildDirectory().getPath(), "reports", "jacoco", "test").toFile();
var buildJacocoExecDir = Path.of(project.buildDirectory().getPath(), "jacoco").toFile(); var buildJacocoExecDir = Path.of(project.buildDirectory().getPath(), "jacoco").toFile();
var buildJacocoExec = Path.of(buildJacocoExecDir.getPath(), "jacoco.exec").toFile(); var buildJacocoExec = Path.of(buildJacocoExecDir.getPath(), "jacoco.exec").toFile();
if (execFiles.isEmpty()) {
// project.testOperation().fromProject(project).javaOptions().javaAgent( // project.testOperation().fromProject(project).javaOptions().javaAgent(
// Path.of(project.libBldDirectory().getPath(), "org.jacoco.agent-" // Path.of(project.libBldDirectory().getPath(), "org.jacoco.agent-"
// + JaCoCo.VERSION.substring(0, JaCoCo.VERSION.lastIndexOf('.')) + "-runtime.jar").toFile(), // + JaCoCo.VERSION.substring(0, JaCoCo.VERSION.lastIndexOf('.')) + "-runtime.jar").toFile(),
@ -162,14 +163,17 @@ public class JacocoReportOperation extends AbstractOperation<JacocoReportOperati
throw new IOException(e); throw new IOException(e);
} }
if (buildJacocoExec.exists()) {
execFiles.add(buildJacocoExec);
}
}
if (sourceFiles.isEmpty()) { if (sourceFiles.isEmpty()) {
sourceFiles.add(project.srcDirectory()); sourceFiles.add(project.srcMainJavaDirectory());
sourceFiles.add(project.srcTestDirectory());
} }
if (classFiles.isEmpty()) { if (classFiles.isEmpty()) {
classFiles.add(project.buildMainDirectory()); classFiles.add(project.buildMainDirectory());
classFiles.add(project.buildTestDirectory());
} }
if (html == null) { if (html == null) {
@ -184,10 +188,6 @@ public class JacocoReportOperation extends AbstractOperation<JacocoReportOperati
csv = new File(buildJacocoReportsDir, "jacocoTestReport.csv"); csv = new File(buildJacocoReportsDir, "jacocoTestReport.csv");
} }
if (execFiles.isEmpty() && (buildJacocoExec.exists())) {
execFiles.add(buildJacocoExec);
}
//noinspection ResultOfMethodCallIgnored //noinspection ResultOfMethodCallIgnored
buildJacocoReportsDir.mkdirs(); buildJacocoReportsDir.mkdirs();
@ -267,7 +267,7 @@ public class JacocoReportOperation extends AbstractOperation<JacocoReportOperati
} }
/** /**
* Sets the locations of the source files. * Sets the locations of the source files. (e.g., {@code src/main/java})
**/ **/
public JacocoReportOperation sourceFiles(File... sourceFiles) { public JacocoReportOperation sourceFiles(File... sourceFiles) {
this.sourceFiles.addAll(Arrays.stream(sourceFiles).toList()); this.sourceFiles.addAll(Arrays.stream(sourceFiles).toList());

View file

@ -17,29 +17,64 @@
package rife.bld.extension; package rife.bld.extension;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import rife.bld.Project;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.Objects;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
class JacocoReportOperationTest { class JacocoReportOperationTest {
final File csv;
final File html;
final Path tempDir; final Path tempDir;
final File xml;
JacocoReportOperationTest() throws IOException { JacocoReportOperationTest() throws IOException {
tempDir = Files.createTempDirectory("jacoco-test"); 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"));
}
static void deleteOnExit(File folder) {
folder.deleteOnExit();
for (var f : Objects.requireNonNull(folder.listFiles())) {
if (f.isDirectory()) {
deleteOnExit(f);
} else {
f.deleteOnExit();
}
}
}
@Test
void executeTest() throws IOException {
newJacocoReportOperation().execute();
assertThat(csv).exists();
assertThat(html).isDirectory();
assertThat(xml).exists();
try (var lines = Files.lines(xml.toPath())) {
assertThat(lines.anyMatch(s ->
s.contains("<counter type=\"INSTRUCTION\" missed=\"0\" covered=\"3\"/>"))).isTrue();
}
// deleteOnExit(tempDir.toFile());
} }
JacocoReportOperation newJacocoReportOperation() { JacocoReportOperation newJacocoReportOperation() {
var o = new JacocoReportOperation(); var o = new JacocoReportOperation();
o.csv(new File(tempDir.toFile(), "jacoco.csv")); o.fromProject(new Project());
o.csv(csv);
o.html(html);
o.xml(xml);
o.classFiles(new File("src/test/resources/Examples.class"));
o.sourceFiles(new File("examples/src/main/java"));
o.execFiles(new File("src/test/resources/jacoco.exec"));
return o; return o;
} }
@Test
void executeTest() {
assertThat(true).isTrue(); // TODO
}
} }

Binary file not shown.

Binary file not shown.

6
update-test-resource.sh Executable file
View file

@ -0,0 +1,6 @@
#!/bin/sh
rm -rf src/test/resources/*
examples/bld co jacoco
cp -f "examples/build/main/com/example/Examples.class" src/test/resources/
cp -f "examples/build/jacoco/jacoco.exec" src/test/resources/