Cleaned up API to match bld operations aand options APIs

This commit is contained in:
Erik C. Thauvin 2024-08-28 10:43:07 -07:00
parent 06a6777e7a
commit cdcf900767
Signed by: erik
GPG key ID: 776702A6A2DA330E
4 changed files with 246 additions and 14 deletions

View file

@ -1,7 +1,7 @@
bld.downloadExtensionJavadoc=false bld.downloadExtensionJavadoc=false
bld.downloadExtensionSources=true bld.downloadExtensionSources=true
bld.downloadLocation= bld.downloadLocation=
bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.2 bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.3-SNAPSHOT
bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.7 bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.8-SNAPSHOT
bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
bld.version=2.0.1 bld.version=2.0.1

View file

@ -34,7 +34,7 @@ public class JacocoReportOperationBuild extends Project {
public JacocoReportOperationBuild() { public JacocoReportOperationBuild() {
pkg = "rife.bld.extension"; pkg = "rife.bld.extension";
name = "JacocoReportOperation"; name = "JacocoReportOperation";
version = version(0, 9, 7); version = version(0, 9, 8, "SNAPSHOT");
javaRelease = 17; javaRelease = 17;

View file

@ -35,7 +35,6 @@ 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.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.logging.Level; import java.util.logging.Level;
@ -111,6 +110,7 @@ public class JacocoReportOperation extends AbstractOperation<JacocoReportOperati
* *
* @param classFiles the class files * @param classFiles the class files
* @return this operation instance * @return this operation instance
* @see #classFiles(Collection)
*/ */
public JacocoReportOperation classFiles(File... classFiles) { public JacocoReportOperation classFiles(File... classFiles) {
classFiles_.addAll(List.of(classFiles)); classFiles_.addAll(List.of(classFiles));
@ -122,10 +122,21 @@ public class JacocoReportOperation extends AbstractOperation<JacocoReportOperati
* *
* @param classFiles the class files * @param classFiles the class files
* @return this operation instance * @return this operation instance
* @see #classFilesStrings(Collection)
*/ */
public JacocoReportOperation classFiles(String... classFiles) { public JacocoReportOperation classFiles(String... classFiles) {
classFiles_.addAll(Arrays.stream(classFiles).map(File::new).toList()); return classFilesStrings(List.of(classFiles));
return this; }
/**
* Sets the locations of Java class files.
*
* @param classFiles the class files
* @return this operation instance
* @see #classFilesPaths(Collection)
*/
public JacocoReportOperation classFiles(Path... classFiles) {
return classFilesPaths(List.of(classFiles));
} }
/** /**
@ -142,12 +153,35 @@ public class JacocoReportOperation extends AbstractOperation<JacocoReportOperati
* *
* @param classFiles the class files * @param classFiles the class files
* @return this operation instance * @return this operation instance
* @see #classFiles(File...)
*/ */
public JacocoReportOperation classFiles(Collection<File> classFiles) { public JacocoReportOperation classFiles(Collection<File> classFiles) {
classFiles_.addAll(classFiles); classFiles_.addAll(classFiles);
return this; return this;
} }
/**
* Sets the locations of Java class files.
*
* @param classFiles the class files
* @return this operation instance
* @see #classFiles(Path...)
*/
public JacocoReportOperation classFilesPaths(Collection<Path> classFiles) {
return classFiles(classFiles.stream().map(Path::toFile).toList());
}
/**
* Sets the locations of Java class files.
*
* @param classFiles the class files
* @return this operation instance
* @see #classFiles(String...)
*/
public JacocoReportOperation classFilesStrings(Collection<String> classFiles) {
return classFiles(classFiles.stream().map(File::new).toList());
}
/** /**
* Sets the location of the CSV report. * Sets the location of the CSV report.
* *
@ -169,6 +203,15 @@ public class JacocoReportOperation extends AbstractOperation<JacocoReportOperati
return csv(new File(csv)); return csv(new File(csv));
} }
/**
* Sets the location of the CSV report.
*
* @param csv the report location
* @return this operation instance
*/
public JacocoReportOperation csv(Path csv) {
return csv(csv.toFile());
}
/** /**
* Sets the file to write execution data to. * Sets the file to write execution data to.
@ -191,6 +234,16 @@ public class JacocoReportOperation extends AbstractOperation<JacocoReportOperati
return destFile(new File(destFile)); return destFile(new File(destFile));
} }
/**
* Sets the file to write execution data to.
*
* @param destFile the file
* @return this operation instance
*/
public JacocoReportOperation destFile(Path destFile) {
return destFile(destFile.toFile());
}
/** /**
* Sets the source file encoding. The platform encoding is used by default. * Sets the source file encoding. The platform encoding is used by default.
* *
@ -207,10 +260,10 @@ public class JacocoReportOperation extends AbstractOperation<JacocoReportOperati
* *
* @param execFiles the exec files * @param execFiles the exec files
* @return this operation instance * @return this operation instance
* @see #execFiles(Collection)
*/ */
public JacocoReportOperation execFiles(File... execFiles) { public JacocoReportOperation execFiles(File... execFiles) {
execFiles_.addAll(List.of(execFiles)); return execFiles(List.of(execFiles));
return this;
} }
/** /**
@ -218,10 +271,10 @@ public class JacocoReportOperation extends AbstractOperation<JacocoReportOperati
* *
* @param execFiles the exec files * @param execFiles the exec files
* @return this operation instance * @return this operation instance
* @see #execFilesStrings(Collection)
*/ */
public JacocoReportOperation execFiles(String... execFiles) { public JacocoReportOperation execFiles(String... execFiles) {
execFiles_.addAll(Arrays.stream(execFiles).map(File::new).toList()); return execFilesStrings(List.of(execFiles));
return this;
} }
/** /**
@ -229,6 +282,18 @@ public class JacocoReportOperation extends AbstractOperation<JacocoReportOperati
* *
* @param execFiles the exec files * @param execFiles the exec files
* @return this operation instance * @return this operation instance
* @see #execFilesPaths(Collection)
*/
public JacocoReportOperation execFiles(Path... execFiles) {
return execFilesPaths(List.of(execFiles));
}
/**
* Sets the locations of the JaCoCo *.exec files to read.
*
* @param execFiles the exec files
* @return this operation instance
* @see #execFiles(File...)
*/ */
public JacocoReportOperation execFiles(Collection<File> execFiles) { public JacocoReportOperation execFiles(Collection<File> execFiles) {
execFiles_.addAll(execFiles); execFiles_.addAll(execFiles);
@ -244,6 +309,28 @@ public class JacocoReportOperation extends AbstractOperation<JacocoReportOperati
return execFiles_; return execFiles_;
} }
/**
* Sets the locations of the JaCoCo *.exec files to read.
*
* @param execFiles the exec files
* @return this operation instance
* @see #execFiles(Path...)
*/
public JacocoReportOperation execFilesPaths(Collection<Path> execFiles) {
return execFiles(execFiles.stream().map(Path::toFile).toList());
}
/**
* Sets the locations of the JaCoCo *.exec files to read.
*
* @param execFiles the exec files
* @return this operation instance
* @see #execFiles(String...)
*/
public JacocoReportOperation execFilesStrings(Collection<String> execFiles) {
return execFiles(execFiles.stream().map(File::new).toList());
}
/** /**
* Performs the operation execution that can be wrapped by the {@code #executeOnce} call. * Performs the operation execution that can be wrapped by the {@code #executeOnce} call.
*/ */
@ -343,6 +430,16 @@ public class JacocoReportOperation extends AbstractOperation<JacocoReportOperati
return html(new File(html)); return html(new File(html));
} }
/**
* Sets the location of the HTML report.
*
* @param html the html
* @return this operation instance
*/
public JacocoReportOperation html(Path html) {
return html(html.toFile());
}
private ExecFileLoader loadExecFiles() throws IOException { private ExecFileLoader loadExecFiles() throws IOException {
var loader = new ExecFileLoader(); var loader = new ExecFileLoader();
if (execFiles_.isEmpty() && LOGGER.isLoggable(Level.WARNING) && !silent()) { if (execFiles_.isEmpty() && LOGGER.isLoggable(Level.WARNING) && !silent()) {
@ -407,10 +504,10 @@ public class JacocoReportOperation extends AbstractOperation<JacocoReportOperati
* *
* @param sourceFiles the source files * @param sourceFiles the source files
* @return this operation instance * @return this operation instance
* @see #sourceFiles(Collection)
*/ */
public JacocoReportOperation sourceFiles(File... sourceFiles) { public JacocoReportOperation sourceFiles(File... sourceFiles) {
sourceFiles_.addAll(List.of(sourceFiles)); return sourceFiles(List.of(sourceFiles));
return this;
} }
/** /**
@ -418,10 +515,10 @@ public class JacocoReportOperation extends AbstractOperation<JacocoReportOperati
* *
* @param sourceFiles the source files * @param sourceFiles the source files
* @return this operation instance * @return this operation instance
* @see #sourceFilesStrings(Collection)
*/ */
public JacocoReportOperation sourceFiles(String... sourceFiles) { public JacocoReportOperation sourceFiles(String... sourceFiles) {
sourceFiles_.addAll(Arrays.stream(sourceFiles).map(File::new).toList()); return sourceFilesStrings(List.of(sourceFiles));
return this;
} }
/** /**
@ -429,6 +526,18 @@ public class JacocoReportOperation extends AbstractOperation<JacocoReportOperati
* *
* @param sourceFiles the source files * @param sourceFiles the source files
* @return this operation instance * @return this operation instance
* @see #sourceFilesPaths(Collection)
*/
public JacocoReportOperation sourceFiles(Path... sourceFiles) {
return sourceFilesPaths(List.of(sourceFiles));
}
/**
* Sets the locations of the source files. (e.g., {@code src/main/java})
*
* @param sourceFiles the source files
* @return this operation instance
* @see #sourceFiles(File...)
*/ */
public JacocoReportOperation sourceFiles(Collection<File> sourceFiles) { public JacocoReportOperation sourceFiles(Collection<File> sourceFiles) {
sourceFiles_.addAll(sourceFiles); sourceFiles_.addAll(sourceFiles);
@ -444,6 +553,28 @@ public class JacocoReportOperation extends AbstractOperation<JacocoReportOperati
return sourceFiles_; return sourceFiles_;
} }
/**
* Sets the locations of the source files. (e.g., {@code src/main/java})
*
* @param sourceFiles the source files
* @return this operation instance
* @see #sourceFiles(Path...)
*/
public JacocoReportOperation sourceFilesPaths(Collection<Path> sourceFiles) {
return sourceFiles(sourceFiles.stream().map(Path::toFile).toList());
}
/**
* Sets the locations of the source files. (e.g., {@code src/main/java})
*
* @param sourceFiles the source files
* @return this operation instance
* @see #sourceFiles(String...)
*/
public JacocoReportOperation sourceFilesStrings(Collection<String> sourceFiles) {
return sourceFiles(sourceFiles.stream().map(File::new).toList());
}
@SuppressWarnings("PMD.AvoidInstantiatingObjectsInLoops") @SuppressWarnings("PMD.AvoidInstantiatingObjectsInLoops")
private ISourceFileLocator sourceLocator() { private ISourceFileLocator sourceLocator() {
var multi = new MultiSourceFileLocator(tabWidth_); var multi = new MultiSourceFileLocator(tabWidth_);
@ -502,4 +633,14 @@ public class JacocoReportOperation extends AbstractOperation<JacocoReportOperati
public JacocoReportOperation xml(String xml) { public JacocoReportOperation xml(String xml) {
return xml(new File(xml)); return xml(new File(xml));
} }
/**
* Sets the location of the XML report.
*
* @param xml the report location
* @return this operation instance
*/
public JacocoReportOperation xml(Path xml) {
return xml(xml.toFile());
}
} }

View file

@ -31,6 +31,7 @@ import java.util.Objects;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatCode; import static org.assertj.core.api.Assertions.assertThatCode;
@SuppressWarnings("PMD.AvoidDuplicateLiterals")
class JacocoReportOperationTest { class JacocoReportOperationTest {
final File csv; final File csv;
final File html; final File html;
@ -109,4 +110,94 @@ class JacocoReportOperationTest {
return op; return op;
} }
@Test
void testClassFiles() {
var foo = new File("foo");
var bar = new File("bar");
var op = new JacocoReportOperation().classFiles("foo", "bar");
assertThat(op.classFiles()).as("String...").contains(foo, bar);
op.classFiles().clear();
op = op.classFiles(foo, bar);
assertThat(op.classFiles()).as("File...").contains(foo, bar);
op.classFiles().clear();
op = op.classFiles(foo.toPath(), bar.toPath());
assertThat(op.classFiles()).as("Path...").contains(foo, bar);
op.classFiles().clear();
op = op.classFilesStrings(List.of("foo", "bar"));
assertThat(op.classFiles()).as("List(String...)").contains(foo, bar);
op.classFiles().clear();
op = op.classFiles(List.of(foo, bar));
assertThat(op.classFiles()).as("File...").contains(foo, bar);
op.classFiles().clear();
op = op.classFilesPaths(List.of(foo.toPath(), bar.toPath()));
assertThat(op.classFiles()).as("Path...").contains(foo, bar);
op.classFiles().clear();
}
@Test
void testExecFiles() {
var foo = new File("foo");
var bar = new File("bar");
var op = new JacocoReportOperation().execFiles("foo", "bar");
assertThat(op.execFiles()).as("String...").contains(foo, bar);
op.execFiles().clear();
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();
}
} }