From 8e2415eda4daa2d30a80d9421462d03219e6b3dd Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Mon, 24 Mar 2025 21:29:54 -0700 Subject: [PATCH] Minor cleanups --- .../bld/java/com/example/ExampleBuild.java | 14 +++------- .../bld/extension/CompileKotlinOperation.java | 12 +++++---- .../extension/kotlin/CompileOptionsTest.java | 26 ++++++++++++++++--- 3 files changed, 34 insertions(+), 18 deletions(-) diff --git a/examples/src/bld/java/com/example/ExampleBuild.java b/examples/src/bld/java/com/example/ExampleBuild.java index 91d5762..aa12e0d 100644 --- a/examples/src/bld/java/com/example/ExampleBuild.java +++ b/examples/src/bld/java/com/example/ExampleBuild.java @@ -61,17 +61,11 @@ public class ExampleBuild extends Project { @Override public void compile() throws Exception { // The source code located in src/main/kotlin and src/test/kotlin will be compiled - var options = new CompileOptions().verbose(true); - var op = new CompileKotlinOperation() + new CompileKotlinOperation() // .kotlinHome("path/to/kotlin") // .kotlinc("path/to/kotlinc") - .compileOptions(options) - .fromProject(this); - - if (!CompileKotlinOperation.isWindows()) { - op.jvmOptions().enableNativeAccess(JvmOptions.ALL_UNNAMED); - } - - op.execute(); + .compileOptions(new CompileOptions().verbose(true)) + .fromProject(this) + .execute(); } } diff --git a/src/main/java/rife/bld/extension/CompileKotlinOperation.java b/src/main/java/rife/bld/extension/CompileKotlinOperation.java index d62b328..bb6f209 100644 --- a/src/main/java/rife/bld/extension/CompileKotlinOperation.java +++ b/src/main/java/rife/bld/extension/CompileKotlinOperation.java @@ -508,18 +508,20 @@ public class CompileKotlinOperation extends AbstractOperation command.add("-J" + s)); } - // compiler options - if (compileOptions_ != null) { - args.addAll(compileOptions_.args()); + // classpath + if (compileOptions_ != null && !compileOptions_.classpath().isEmpty()) { cp.addAll(compileOptions_.classpath().stream().map(this::cleanPath).toList()); } - - // classpath if (!cp.isEmpty()) { args.add("-cp"); args.add('"' + FileUtils.joinPaths(cp.stream().map(this::cleanPath).toList()) + '"'); } + // compile options + if (compileOptions_ != null && !compileOptions_.args().isEmpty()) { + args.addAll(compileOptions_.args()); + } + // destination args.add("-d"); args.add('"' + cleanPath(destination) + '"'); diff --git a/src/test/java/rife/bld/extension/kotlin/CompileOptionsTest.java b/src/test/java/rife/bld/extension/kotlin/CompileOptionsTest.java index 0f498a2..5b36483 100644 --- a/src/test/java/rife/bld/extension/kotlin/CompileOptionsTest.java +++ b/src/test/java/rife/bld/extension/kotlin/CompileOptionsTest.java @@ -185,17 +185,23 @@ class CompileOptionsTest { var bar = new File("bar.txt"); var options = new CompileOptions(); + options = options.argFile(foo); + assertThat(options.argFile()).contains(foo); + options.argFile().clear(); + assertThat(options.argFile()).isEmpty(); + options.argFile(foo, bar); assertThat(options.argFile()).contains(foo, bar); options.argFile().clear(); + assertThat(options.argFile()).isEmpty(); options = options.argFile(foo.toPath(), bar.toPath()); assertThat(options.argFile()).contains(foo, bar); options.argFile().clear(); + assertThat(options.argFile()).isEmpty(); - options.argFile(foo.getAbsolutePath(), bar.getAbsolutePath()); + options = options.argFile(foo.getAbsolutePath(), bar.getAbsolutePath()); assertThat(options.argFile()).contains(new File(foo.getAbsolutePath()), new File(bar.getAbsolutePath())); - options.argFile().clear(); } @Test @@ -254,31 +260,45 @@ class CompileOptionsTest { var bar = new File("bar.txt"); var options = new CompileOptions(); + options = options.classpath(foo); + assertThat(options.classpath()).as("File").containsExactly(foo); + options.classpath().clear(); + assertThat(options.argFile()).isEmpty(); + + options.classpath(foo, bar); assertThat(options.classpath()).as("File...").containsExactly(foo, bar); options.classpath().clear(); + assertThat(options.argFile()).isEmpty(); + options.classpath(List.of(foo, bar)); assertThat(options.classpath()).as("List(File...)").containsExactly(foo, bar); options.classpath().clear(); + assertThat(options.argFile()).isEmpty(); + options = options.classpath(foo.toPath(), bar.toPath()); assertThat(options.classpath()).as("Path...").containsExactly(foo, bar); options.classpath().clear(); + assertThat(options.argFile()).isEmpty(); + options = options.classpathPaths(List.of(foo.toPath(), bar.toPath())); assertThat(options.classpath()).as("List(Path...)").containsExactly(foo, bar); options.classpath().clear(); + assertThat(options.argFile()).isEmpty(); + options.classpath(foo.getAbsolutePath(), bar.getAbsolutePath()); assertThat(options.classpath()).as("String...") .containsExactly(new File(foo.getAbsolutePath()), new File(bar.getAbsolutePath())); options.classpath().clear(); + assertThat(options.argFile()).isEmpty(); 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(); } @Test