diff --git a/.idea/libraries/bld.xml b/.idea/libraries/bld.xml
index 9f8c820..1d0172b 100644
--- a/.idea/libraries/bld.xml
+++ b/.idea/libraries/bld.xml
@@ -2,12 +2,12 @@
-
+
-
+
diff --git a/.idea/libraries/compile.xml b/.idea/libraries/compile.xml
index 9bd86aa..99cc0c0 100644
--- a/.idea/libraries/compile.xml
+++ b/.idea/libraries/compile.xml
@@ -7,7 +7,7 @@
-
-
+
+
\ No newline at end of file
diff --git a/.idea/libraries/runtime.xml b/.idea/libraries/runtime.xml
index 2ae5c4b..d4069f2 100644
--- a/.idea/libraries/runtime.xml
+++ b/.idea/libraries/runtime.xml
@@ -8,7 +8,7 @@
-
-
+
+
\ No newline at end of file
diff --git a/.idea/libraries/test.xml b/.idea/libraries/test.xml
index b80486a..57ed5ef 100644
--- a/.idea/libraries/test.xml
+++ b/.idea/libraries/test.xml
@@ -8,7 +8,7 @@
-
-
+
+
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 5b2667b..4c33beb 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -9,7 +9,7 @@
],
"java.configuration.updateBuildConfiguration": "automatic",
"java.project.referencedLibraries": [
- "${HOME}/.bld/dist/bld-2.0.1.jar",
+ "${HOME}/.bld/dist/bld-2.1.0.jar",
"lib/**/*.jar"
]
}
diff --git a/README.md b/README.md
index 814dd4c..51c5c98 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
[](https://opensource.org/licenses/Apache-2.0)
[](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
[](https://kotlinlang.org)
-[](https://rife2.com/bld)
+[](https://rife2.com/bld)
[](https://repo.rife2.com/#/releases/com/uwyn/rife2/bld-kotlin)
[](https://repo.rife2.com/#/snapshots/com/uwyn/rife2/bld-kotlin)
[](https://github.com/rife2/bld-kotlin/actions/workflows/bld.yml)
diff --git a/examples/.idea/libraries/bld.xml b/examples/.idea/libraries/bld.xml
index 4dd96bf..5c4010c 100644
--- a/examples/.idea/libraries/bld.xml
+++ b/examples/.idea/libraries/bld.xml
@@ -2,12 +2,12 @@
-
+
-
+
diff --git a/examples/.idea/libraries/compile.xml b/examples/.idea/libraries/compile.xml
index 9bd86aa..99cc0c0 100644
--- a/examples/.idea/libraries/compile.xml
+++ b/examples/.idea/libraries/compile.xml
@@ -7,7 +7,7 @@
-
-
+
+
\ No newline at end of file
diff --git a/examples/.idea/libraries/runtime.xml b/examples/.idea/libraries/runtime.xml
index 2ae5c4b..d4069f2 100644
--- a/examples/.idea/libraries/runtime.xml
+++ b/examples/.idea/libraries/runtime.xml
@@ -8,7 +8,7 @@
-
-
+
+
\ No newline at end of file
diff --git a/examples/.idea/libraries/test.xml b/examples/.idea/libraries/test.xml
index b80486a..57ed5ef 100644
--- a/examples/.idea/libraries/test.xml
+++ b/examples/.idea/libraries/test.xml
@@ -8,7 +8,7 @@
-
-
+
+
\ No newline at end of file
diff --git a/examples/.vscode/settings.json b/examples/.vscode/settings.json
index 5b2667b..4c33beb 100644
--- a/examples/.vscode/settings.json
+++ b/examples/.vscode/settings.json
@@ -9,7 +9,7 @@
],
"java.configuration.updateBuildConfiguration": "automatic",
"java.project.referencedLibraries": [
- "${HOME}/.bld/dist/bld-2.0.1.jar",
+ "${HOME}/.bld/dist/bld-2.1.0.jar",
"lib/**/*.jar"
]
}
diff --git a/examples/lib/bld/bld-wrapper.jar b/examples/lib/bld/bld-wrapper.jar
index a69c227..7d4c215 100644
Binary files a/examples/lib/bld/bld-wrapper.jar and b/examples/lib/bld/bld-wrapper.jar differ
diff --git a/examples/lib/bld/bld-wrapper.properties b/examples/lib/bld/bld-wrapper.properties
index 930a601..949f84f 100644
--- a/examples/lib/bld/bld-wrapper.properties
+++ b/examples/lib/bld/bld-wrapper.properties
@@ -1,7 +1,7 @@
bld.downloadExtensionJavadoc=false
bld.downloadExtensionSources=true
bld.downloadLocation=
-bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.1-SNAPSHOT
+bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.1
bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
bld.sourceDirectories=
-bld.version=2.0.1
+bld.version=2.1.0
diff --git a/lib/bld/bld-wrapper.jar b/lib/bld/bld-wrapper.jar
index 23aa489..04827e4 100644
Binary files a/lib/bld/bld-wrapper.jar and b/lib/bld/bld-wrapper.jar differ
diff --git a/lib/bld/bld-wrapper.properties b/lib/bld/bld-wrapper.properties
index 01003fd..4f25cfc 100644
--- a/lib/bld/bld-wrapper.properties
+++ b/lib/bld/bld-wrapper.properties
@@ -3,8 +3,8 @@ bld.downloadExtensionSources=true
bld.downloadLocation=
bld.javaOptions=
bld.javacOptions=
-bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.2
-bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.1.4
+bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.3
+bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.1.5
bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
bld.sourceDirectories=
-bld.version=2.0.1
+bld.version=2.1.0
diff --git a/src/bld/java/rife/bld/extension/CompileKotlinOperationBuild.java b/src/bld/java/rife/bld/extension/CompileKotlinOperationBuild.java
index edead32..885e968 100644
--- a/src/bld/java/rife/bld/extension/CompileKotlinOperationBuild.java
+++ b/src/bld/java/rife/bld/extension/CompileKotlinOperationBuild.java
@@ -33,7 +33,7 @@ public class CompileKotlinOperationBuild extends Project {
public CompileKotlinOperationBuild() {
pkg = "rife.bld.extension";
name = "bld-kotlin";
- version = version(1, 0, 1, "SNAPSHOT");
+ version = version(1, 0, 1);
javaRelease = 17;
@@ -43,7 +43,7 @@ public class CompileKotlinOperationBuild extends Project {
repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES, RIFE2_SNAPSHOTS);
scope(compile)
- .include(dependency("com.uwyn.rife2", "bld", version(2, 0, 1)));
+ .include(dependency("com.uwyn.rife2", "bld", version(2, 1, 0)));
scope(test)
.include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 0)))
.include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 0)))
diff --git a/src/main/java/rife/bld/extension/CompileKotlinOperation.java b/src/main/java/rife/bld/extension/CompileKotlinOperation.java
index 34f65f0..af0bc45 100644
--- a/src/main/java/rife/bld/extension/CompileKotlinOperation.java
+++ b/src/main/java/rife/bld/extension/CompileKotlinOperation.java
@@ -27,7 +27,6 @@ import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.logging.Level;
@@ -66,6 +65,16 @@ public class CompileKotlinOperation extends AbstractOperation directories) {
mainSourceDirectories_.addAll(directories);
@@ -494,14 +564,25 @@ public class CompileKotlinOperation extends AbstractOperation directories) {
+ return mainSourceDirectories(directories.stream().map(Path::toFile).toList());
+ }
+
+ /**
+ * Provides the main source directories that should be compiled.
+ *
+ * @param directories the main source directories
+ * @return this operation instance
+ * @see #mainSourceDirectories(String...)
+ */
+ public CompileKotlinOperation mainSourceDirectoriesStrings(Collection directories) {
+ return mainSourceDirectories(directories.stream().map(File::new).toList());
}
/**
@@ -509,10 +590,32 @@ public class CompileKotlinOperation extends AbstractOperation files) {
mainSourceFiles_.addAll(files);
@@ -535,6 +639,39 @@ public class CompileKotlinOperation extends AbstractOperation files) {
+ return mainSourceFiles(files.stream().map(Path::toFile).toList());
+ }
+
+ /**
+ * Provides the main source files that should be compiled.
+ *
+ * @param files the main source files
+ * @return this operation instance
+ * @see #mainSourceFiles(String...)
+ */
+ public CompileKotlinOperation mainSourceFilesStrings(Collection files) {
+ return mainSourceFiles(files.stream().map(File::new).toList());
+ }
+
+ /**
+ * Provides compiler plugins.
+ *
+ * @param directory the directory containing the plugin JARs
+ * @param plugins one or more plugins
+ * @return this class instance
+ */
+ public CompileKotlinOperation plugins(String directory, CompilerPlugin... plugins) {
+ return plugins(new File(directory), plugins);
+ }
+
/**
* Provides compiler plugins.
*
@@ -542,8 +679,7 @@ public class CompileKotlinOperation extends AbstractOperation directories) {
testSourceDirectories_.addAll(directories);
@@ -650,15 +809,37 @@ public class CompileKotlinOperation extends AbstractOperation directories) {
+ return testSourceDirectories(directories.stream().map(Path::toFile).toList());
+ }
+
+ /**
+ * Provides the test source directories that should be compiled.
+ *
+ * @param directories the test source directories
+ * @return this operation instance
+ * @see #testSourceDirectories(String...)
+ */
+ public CompileKotlinOperation testSourceDirectoriesStrings(Collection directories) {
+ return testSourceDirectories(directories.stream().map(File::new).toList());
+ }
+
/**
* Provides test source files that should be compiled.
*
* @param files one or more test source files
* @return this operation instance
+ * @see #testSourceFiles(Collection)
*/
public CompileKotlinOperation testSourceFiles(File... files) {
- testSourceFiles_.addAll(List.of(files));
- return this;
+ return testSourceFiles(List.of(files));
}
/**
@@ -666,10 +847,21 @@ public class CompileKotlinOperation extends AbstractOperation files) {
testSourceFiles_.addAll(files);
@@ -692,6 +885,28 @@ public class CompileKotlinOperation extends AbstractOperation files) {
+ return testSourceFiles(files.stream().map(Path::toFile).toList());
+ }
+
+ /**
+ * Provides the test source files that should be compiled.
+ *
+ * @param files the test source files
+ * @return this operation instance
+ * @see #testSourceFiles(String...)
+ */
+ public CompileKotlinOperation testSourceFilesStrings(Collection files) {
+ return testSourceFiles(files.stream().map(File::new).toList());
+ }
+
/**
* Retrieves the working directory.
*
@@ -712,6 +927,16 @@ public class CompileKotlinOperation extends AbstractOperation files) {
argFile_.addAll(files);
@@ -175,6 +174,7 @@ public class CompileOptions {
*
* @param files one or more files
* @return this operation instance
+ * @see #argFile(Collection)
*/
public CompileOptions argFile(File... files) {
return argFile(List.of(files));
@@ -197,6 +197,7 @@ public class CompileOptions {
*
* @param files one or more files
* @return this operation instance
+ * @see #argFilePaths(Collection)
*/
public CompileOptions argFile(Path... files) {
return argFilePaths(List.of(files));
@@ -216,7 +217,7 @@ public class CompileOptions {
*
* @param files the compiler options files
* @return this operation instance
- * @see #argFile(String...)
+ * @see #argFile(Path...)
*/
public CompileOptions argFilePaths(Collection files) {
return argFile(files.stream().map(Path::toFile).toList());
@@ -393,6 +394,7 @@ public class CompileOptions {
*
* @param paths one pr more paths
* @return this operation instance
+ * @see #classpathStrings(Collection)
*/
public CompileOptions classpath(String... paths) {
return classpathStrings(List.of(paths));
@@ -405,6 +407,7 @@ public class CompileOptions {
*
* @param paths one or more path
* @return this operation instance
+ * @see #classpath(Collection)
*/
public CompileOptions classpath(File... paths) {
return classpath(List.of(paths));
@@ -417,6 +420,7 @@ public class CompileOptions {
*
* @param paths one or more path
* @return this operation instance
+ * @see #classpathPaths(Collection)
*/
public CompileOptions classpath(Path... paths) {
return classpathPaths(List.of(paths));
@@ -429,6 +433,7 @@ public class CompileOptions {
*
* @param paths the search paths
* @return this operation instance
+ * @see #classpath(File...)
*/
public CompileOptions classpath(Collection paths) {
classpath_.addAll(paths);
@@ -451,6 +456,7 @@ public class CompileOptions {
*
* @param paths one pr more paths
* @return this operation instance
+ * @see #classpath(Path...)
*/
public CompileOptions classpathPaths(Collection paths) {
return classpath(paths.stream().map(Path::toFile).toList());
@@ -463,6 +469,7 @@ public class CompileOptions {
*
* @param paths one pr more paths
* @return this operation instance
+ * @see #classpath(String...)
*/
public CompileOptions classpathStrings(Collection paths) {
return classpath(paths.stream().map(File::new).toList());
@@ -679,8 +686,7 @@ public class CompileOptions {
* @see #jdkRelease(String)
*/
public CompileOptions jdkRelease(int version) {
- jdkRelease_ = String.valueOf(version);
- return this;
+ return jdkRelease(String.valueOf(version));
}
/**
@@ -721,8 +727,7 @@ public class CompileOptions {
* @see #jvmTarget(String)
*/
public CompileOptions jvmTarget(int target) {
- jvmTarget_ = String.valueOf(target);
- return this;
+ return jvmTarget(String.valueOf(target));
}
/**
@@ -879,8 +884,7 @@ public class CompileOptions {
* @return this operation instance
*/
public CompileOptions optIn(String... annotations) {
- optIn_.addAll(List.of(annotations));
- return this;
+ return optIn(List.of(annotations));
}
/**
@@ -910,8 +914,7 @@ public class CompileOptions {
* @return this operation instance
*/
public CompileOptions options(String... options) {
- options_.addAll(List.of(options));
- return this;
+ return options(List.of(options));
}
/**
@@ -1022,8 +1025,7 @@ public class CompileOptions {
* @return this operation instance
*/
public CompileOptions scriptTemplates(String... classNames) {
- scriptTemplates_.addAll(List.of(classNames));
- return this;
+ return scriptTemplates(List.of(classNames));
}
/**
diff --git a/src/test/java/rife/bld/extension/CompileKotlinOperationTest.java b/src/test/java/rife/bld/extension/CompileKotlinOperationTest.java
index e2e6bd5..85c8cff 100644
--- a/src/test/java/rife/bld/extension/CompileKotlinOperationTest.java
+++ b/src/test/java/rife/bld/extension/CompileKotlinOperationTest.java
@@ -37,7 +37,11 @@ import java.util.logging.Logger;
import static org.assertj.core.api.Assertions.assertThat;
+@SuppressWarnings("PMD.AvoidDuplicateLiterals")
class CompileKotlinOperationTest {
+ private static final String FILE_1 = "file1";
+ private static final String FILE_2 = "file2";
+
@BeforeAll
static void beforeAll() {
var level = Level.ALL;
@@ -49,6 +53,36 @@ class CompileKotlinOperationTest {
logger.setUseParentHandlers(false);
}
+ @Test
+ void testBuildMainDirectory() {
+ var foo = new File("foo");
+ var bar = new File("bar");
+
+ var op = new CompileKotlinOperation().buildMainDirectory(foo);
+ assertThat(op.buildMainDirectory()).as("as file").isEqualTo(foo);
+
+ op = op.buildMainDirectory(bar.toPath());
+ assertThat(op.buildMainDirectory()).as("as path").isEqualTo(bar);
+
+ op = new CompileKotlinOperation().buildMainDirectory("foo");
+ assertThat(op.buildMainDirectory()).as("as string").isEqualTo(foo);
+ }
+
+ @Test
+ void testBuildTestDirectory() {
+ var foo = new File("foo");
+ var bar = new File("bar");
+
+ var op = new CompileKotlinOperation().buildTestDirectory(foo);
+ assertThat(op.buildTestDirectory()).as("as file").isEqualTo(foo);
+
+ op = op.buildTestDirectory(bar.toPath());
+ assertThat(op.buildTestDirectory()).as("as path").isEqualTo(bar);
+
+ op = new CompileKotlinOperation().buildTestDirectory("foo");
+ assertThat(op.buildTestDirectory()).as("as string").isEqualTo(foo);
+ }
+
@Test
void testCollections() {
var op = new CompileKotlinOperation()
@@ -71,6 +105,9 @@ class CompileKotlinOperationTest {
.plugins("plugin1", "plugin2")
.plugins(CompilerPlugin.KOTLIN_SERIALIZATION, CompilerPlugin.ASSIGNMENT)
.plugins(new File("lib/compile"), CompilerPlugin.LOMBOK, CompilerPlugin.POWER_ASSERT)
+ .plugins(Path.of("lib/compile"), CompilerPlugin.NOARG, CompilerPlugin.ALL_OPEN)
+ .plugins("lib/compile", CompilerPlugin.KOTLINX_SERIALIZATION, CompilerPlugin.SAM_WITH_RECEIVER)
+
.plugins(List.of("plugin3", "plugin4"));
assertThat(op.kotlinHome().getName()).as("kotlin_home").isEqualTo("kotlin_home");
@@ -93,10 +130,15 @@ class CompileKotlinOperationTest {
assertThat(op.testSourceFiles()).as("testSourceFiles").containsOnly(
new File("tfile1"), new File("tfile2"), new File("tfile3"),
new File("tfile4"), new File("tfile5"), new File("tfile6"));
- assertThat(op.plugins()).as("plugins").contains("plugin2", "plugin3", "plugin4",
+ assertThat(op.plugins()).as("plugins").contains("plugin1", "plugin2", "plugin3", "plugin4",
"/kotlin_home/lib/kotlin-serialization-compiler-plugin.jar",
- "/kotlin_home/lib/assignment-compiler-plugin.jar");
- assertThat(op.plugins()).as("plugins size").hasSize(8);
+ "/kotlin_home/lib/assignment-compiler-plugin.jar",
+ new File("lib/compile", "lombok-compiler-plugin.jar").getAbsolutePath(),
+ new File("lib/compile", "power-assert-compiler-plugin.jar").getAbsolutePath(),
+ new File("lib/compile", "noarg-compiler-plugin.jar").getAbsolutePath(),
+ new File("lib/compile", "allopen-compiler-plugin.jar").getAbsolutePath(),
+ new File("lib/compile", "kotlinx-serialization-compiler-plugin.jar").getAbsolutePath(),
+ new File("lib/compile", "sam-with-receiver-compiler-plugin.jar").getAbsolutePath());
}
@Test
@@ -155,6 +197,98 @@ class CompileKotlinOperationTest {
}
}
+ @Test
+ void testKotlinHome() {
+ var foo = new File("foo");
+ var bar = new File("bar");
+
+ var op = new CompileKotlinOperation().kotlinHome(foo);
+ assertThat(op.kotlinHome()).as("as file").isEqualTo(foo);
+
+ op = op.kotlinHome(bar.toPath());
+ assertThat(op.kotlinHome()).as("as path").isEqualTo(bar);
+
+ op = new CompileKotlinOperation().kotlinHome("foo");
+ assertThat(op.kotlinHome()).as("as string").isEqualTo(foo);
+ }
+
+ @Test
+ void testKotlinc() {
+ var foo = new File("foo");
+ var bar = new File("bar");
+
+ var op = new CompileKotlinOperation().kotlinc(foo);
+ assertThat(op.kotlinc()).as("as file").isEqualTo(foo);
+
+ op = op.kotlinc(bar.toPath());
+ assertThat(op.kotlinc()).as("as path").isEqualTo(bar);
+
+ op = new CompileKotlinOperation().kotlinc("foo");
+ assertThat(op.kotlinc()).as("as string").isEqualTo(foo);
+ }
+
+ @Test
+ void testMainSourceDirectories() {
+ var op = new CompileKotlinOperation();
+
+ op.mainSourceDirectories(List.of(new File(FILE_1), new File(FILE_2)));
+ assertThat(op.mainSourceDirectories()).as("List(File...)").containsExactly(new File(FILE_1), new File(FILE_2));
+ op.mainSourceDirectories().clear();
+
+ op.mainSourceDirectories(new File(FILE_1), new File(FILE_2));
+ assertThat(op.mainSourceDirectories()).as("File...").containsExactly(new File(FILE_1), new File(FILE_2));
+ op.mainSourceDirectories().clear();
+
+ op.mainSourceDirectories(FILE_1, FILE_2);
+ assertThat(op.mainSourceDirectories()).as("String...")
+ .containsExactly(new File(FILE_1), new File(FILE_2));
+ op.mainSourceDirectories().clear();
+
+ op = op.mainSourceDirectories(Path.of(FILE_1), Path.of(FILE_2));
+ assertThat(op.mainSourceDirectories()).as("Path...")
+ .containsExactly(new File(FILE_1), new File(FILE_2));
+ op.mainSourceDirectories().clear();
+
+ op.mainSourceDirectoriesPaths(List.of(new File(FILE_1).toPath(), new File(FILE_2).toPath()));
+ assertThat(op.mainSourceDirectories()).as("List(Path...)").containsExactly(new File(FILE_1), new File(FILE_2));
+ op.mainSourceDirectories().clear();
+
+ op.mainSourceDirectoriesStrings(List.of(FILE_1, FILE_2));
+ assertThat(op.mainSourceDirectories()).as("List(String...)").containsExactly(new File(FILE_1), new File(FILE_2));
+ op.mainSourceDirectories().clear();
+ }
+
+ @Test
+ void testMainSourceFiles() {
+ var op = new CompileKotlinOperation();
+
+ op.mainSourceFiles(List.of(new File(FILE_1), new File(FILE_2)));
+ assertThat(op.mainSourceFiles()).as("List(File...)").containsExactly(new File(FILE_1), new File(FILE_2));
+ op.mainSourceFiles().clear();
+
+ op.mainSourceFiles(new File(FILE_1), new File(FILE_2));
+ assertThat(op.mainSourceFiles()).as("File...").containsExactly(new File(FILE_1), new File(FILE_2));
+ op.mainSourceFiles().clear();
+
+ op.mainSourceFiles(FILE_1, FILE_2);
+ assertThat(op.mainSourceFiles()).as("String...")
+ .containsExactly(new File(FILE_1), new File(FILE_2));
+ op.mainSourceFiles().clear();
+
+ op = op.mainSourceFiles(Path.of(FILE_1), Path.of(FILE_2));
+ assertThat(op.mainSourceFiles()).as("Path...")
+ .containsExactly(new File(FILE_1), new File(FILE_2));
+ op.mainSourceFiles().clear();
+
+ op.mainSourceFilesPaths(List.of(new File(FILE_1).toPath(), new File(FILE_2).toPath()));
+ assertThat(op.mainSourceFiles()).as("List(Path...)").containsExactly(new File(FILE_1), new File(FILE_2));
+ op.mainSourceFiles().clear();
+
+ op.mainSourceFilesStrings(List.of(FILE_1, FILE_2));
+ assertThat(op.mainSourceFiles()).as("List(String...)").containsExactly(new File(FILE_1), new File(FILE_2));
+ op.mainSourceFiles().clear();
+ }
+
@Test
@SuppressWarnings("PMD.AvoidInstantiatingObjectsInLoops")
void testPlugins() {
@@ -173,4 +307,81 @@ class CompileKotlinOperationTest {
assertThat(new File(p)).as(p).exists();
}
}
+
+ @Test
+ void testTestSourceDirectories() {
+ var op = new CompileKotlinOperation();
+
+ op.testSourceDirectories(List.of(new File(FILE_1), new File(FILE_2)));
+ assertThat(op.testSourceDirectories()).as("List(File...)").containsExactly(new File(FILE_1), new File(FILE_2));
+ op.testSourceDirectories().clear();
+
+ op.testSourceDirectories(new File(FILE_1), new File(FILE_2));
+ assertThat(op.testSourceDirectories()).as("File...").containsExactly(new File(FILE_1), new File(FILE_2));
+ op.testSourceDirectories().clear();
+
+ op.testSourceDirectories(FILE_1, FILE_2);
+ assertThat(op.testSourceDirectories()).as("String...")
+ .containsExactly(new File(FILE_1), new File(FILE_2));
+ op.testSourceDirectories().clear();
+
+ op = op.testSourceDirectories(Path.of(FILE_1), Path.of(FILE_2));
+ assertThat(op.testSourceDirectories()).as("Path...")
+ .containsExactly(new File(FILE_1), new File(FILE_2));
+ op.testSourceDirectories().clear();
+
+ op.testSourceDirectoriesPaths(List.of(new File(FILE_1).toPath(), new File(FILE_2).toPath()));
+ assertThat(op.testSourceDirectories()).as("List(Path...)").containsExactly(new File(FILE_1), new File(FILE_2));
+ op.testSourceDirectories().clear();
+
+ op.testSourceDirectoriesStrings(List.of(FILE_1, FILE_2));
+ assertThat(op.testSourceDirectories()).as("List(String...)").containsExactly(new File(FILE_1), new File(FILE_2));
+ op.testSourceDirectories().clear();
+ }
+
+ @Test
+ void testTestSourceFiles() {
+ var op = new CompileKotlinOperation();
+
+ op.testSourceFiles(List.of(new File(FILE_1), new File(FILE_2)));
+ assertThat(op.testSourceFiles()).as("List(File...)").containsExactly(new File(FILE_1), new File(FILE_2));
+ op.testSourceFiles().clear();
+
+ op.testSourceFiles(new File(FILE_1), new File(FILE_2));
+ assertThat(op.testSourceFiles()).as("File...").containsExactly(new File(FILE_1), new File(FILE_2));
+ op.testSourceFiles().clear();
+
+ op.testSourceFiles(FILE_1, FILE_2);
+ assertThat(op.testSourceFiles()).as("String...")
+ .containsExactly(new File(FILE_1), new File(FILE_2));
+ op.testSourceFiles().clear();
+
+ op = op.testSourceFiles(Path.of(FILE_1), Path.of(FILE_2));
+ assertThat(op.testSourceFiles()).as("Path...")
+ .containsExactly(new File(FILE_1), new File(FILE_2));
+ op.testSourceFiles().clear();
+
+ op.testSourceFilesPaths(List.of(new File(FILE_1).toPath(), new File(FILE_2).toPath()));
+ assertThat(op.testSourceFiles()).as("List(Path...)").containsExactly(new File(FILE_1), new File(FILE_2));
+ op.testSourceFiles().clear();
+
+ op.testSourceFilesStrings(List.of(FILE_1, FILE_2));
+ assertThat(op.testSourceFiles()).as("List(String...)").containsExactly(new File(FILE_1), new File(FILE_2));
+ op.testSourceFiles().clear();
+ }
+
+ @Test
+ void testWorkDir() {
+ var foo = new File("foo");
+ var bar = new File("bar");
+
+ var op = new CompileKotlinOperation().workDir(foo);
+ assertThat(op.workDir()).as("as file").isEqualTo(foo);
+
+ op = op.workDir(bar.toPath());
+ assertThat(op.workDir()).as("as path").isEqualTo(bar);
+
+ op = new CompileKotlinOperation().workDir("foo");
+ assertThat(op.workDir()).as("as string").isEqualTo(foo);
+ }
}
diff --git a/src/test/java/rife/bld/extension/kotlin/CompileOptionsTest.java b/src/test/java/rife/bld/extension/kotlin/CompileOptionsTest.java
index b628a3c..91ad563 100644
--- a/src/test/java/rife/bld/extension/kotlin/CompileOptionsTest.java
+++ b/src/test/java/rife/bld/extension/kotlin/CompileOptionsTest.java
@@ -248,15 +248,29 @@ class CompileOptionsTest {
var options = new CompileOptions();
options.classpath(foo, bar);
- assertThat(options.classpath()).contains(foo, bar);
+ assertThat(options.classpath()).as("File...").containsExactly(foo, bar);
+ options.classpath().clear();
+
+ options.classpath(List.of(foo, bar));
+ assertThat(options.classpath()).as("List(File...)").containsExactly(foo, bar);
options.classpath().clear();
options = options.classpath(foo.toPath(), bar.toPath());
- assertThat(options.classpath()).contains(foo, bar);
+ assertThat(options.classpath()).as("Path...").containsExactly(foo, bar);
+ options.classpath().clear();
+
+ options = options.classpathPaths(List.of(foo.toPath(), bar.toPath()));
+ assertThat(options.classpath()).as("List(Path...)").containsExactly(foo, bar);
options.classpath().clear();
options.classpath(foo.getAbsolutePath(), bar.getAbsolutePath());
- assertThat(options.classpath()).contains(new File(foo.getAbsolutePath()), new File(bar.getAbsolutePath()));
+ assertThat(options.classpath()).as("String...")
+ .containsExactly(new File(foo.getAbsolutePath()), new File(bar.getAbsolutePath()));
+ options.classpath().clear();
+
+ options.classpathStrings(List.of(foo.getAbsolutePath(), bar.getAbsolutePath()));
+ assertThat(options.classpath()).as("List(String...)")
+ .containsExactly(new File(foo.getAbsolutePath()), new File(bar.getAbsolutePath()));
options.classpath().clear();
}
@@ -301,7 +315,7 @@ class CompileOptionsTest {
.includeRuntime(true)
.javaParameters(true)
.jdkHome("jdk-home")
- .jdkRelease("22")
+ .jdkRelease(22)
.jvmTarget("9")
.kotlinHome("kotlin-home")
.languageVersion("1.0")