From ed96718f1450d49c0ae51aee079e944cddd8c00f Mon Sep 17 00:00:00 2001 From: "James Z.M. Gao" Date: Mon, 4 Apr 2022 20:31:59 +0800 Subject: [PATCH 1/3] add ut for scala command arguments --- .../java/scala_maven/ScalaMojoSupport.java | 4 +- .../scala_maven/ScalaMojoSupportTest.java | 101 ++++++++++++++++++ 2 files changed, 103 insertions(+), 2 deletions(-) diff --git a/src/main/java/scala_maven/ScalaMojoSupport.java b/src/main/java/scala_maven/ScalaMojoSupport.java index 54983ee8..86210049 100644 --- a/src/main/java/scala_maven/ScalaMojoSupport.java +++ b/src/main/java/scala_maven/ScalaMojoSupport.java @@ -105,7 +105,7 @@ public abstract class ScalaMojoSupport extends AbstractMojo { /** Scala 's version to use. (property 'maven.scala.version' replaced by 'scala.version') */ @Parameter(property = "scala.version") - private String scalaVersion; + protected String scalaVersion; /** * Organization/group ID of the Scala used in the project. Default value is 'org.scala-lang'. This @@ -524,7 +524,7 @@ final JavaMainCaller getEmptyScalaCommand(final String mainClass) throws Excepti * if you are invoking the REPL. * @return a {@link JavaMainCaller} to use to invoke the given command. */ - private JavaMainCaller getEmptyScalaCommand(final String mainClass, final boolean forkOverride) + JavaMainCaller getEmptyScalaCommand(final String mainClass, final boolean forkOverride) throws Exception { // If we are deviating from the plugin settings, let the user know diff --git a/src/test/java/scala_maven/ScalaMojoSupportTest.java b/src/test/java/scala_maven/ScalaMojoSupportTest.java index 6cfffeda..c226960b 100644 --- a/src/test/java/scala_maven/ScalaMojoSupportTest.java +++ b/src/test/java/scala_maven/ScalaMojoSupportTest.java @@ -5,9 +5,15 @@ package scala_maven; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import java.util.List; import org.junit.Test; +import scala_maven_executions.JavaMainCaller; +import scala_maven_executions.JavaMainCallerSupport; public class ScalaMojoSupportTest { @@ -60,4 +66,99 @@ public void scala2_13_should_generate_non_prefixed_target() { assertEquals("11", ScalaMojoSupport.targetOption("11", new VersionNumber("2.13.8"))); assertEquals("17", ScalaMojoSupport.targetOption("17", new VersionNumber("2.13.8"))); } + + static class ScalaMojoSupportWithRelease extends ScalaMojoSupport { + public ScalaMojoSupportWithRelease() { + this.release = "42"; + this.target = "8"; + } + + public List getScalacOptions() throws Exception { + try { + return super.getScalacOptions(); + } catch (final Exception e) { + e.printStackTrace(); + throw e; + } + } + + public void setScalaVersion(final String v) { + this.scalaVersion = v; + } + + @Override + protected void doExecute() throws Exception {} + + @Override + JavaMainCaller getEmptyScalaCommand(final String mainClass, final boolean forkOverride) { + return new JavaMainCallerArgs(this); + } + } + + static class JavaMainCallerArgs extends JavaMainCallerSupport { + public JavaMainCallerArgs(final ScalaMojoSupport mojo) { + super(mojo, null, null, null, null); + } + + public List getArgs() { + return this.args; + } + + @Override + public scala_maven_executions.SpawnMonitor spawn(boolean displayCmd) throws Exception { + return null; + } + + @Override + public boolean run(boolean displayCmd, boolean throwFailure) throws Exception { + return false; + } + + @Override + public void redirectToLog() {} + } + + final ScalaMojoSupportWithRelease mojoWithRelease = new ScalaMojoSupportWithRelease(); + + @Test + public void scala2_11_should_skip_release_option() throws Exception { + mojoWithRelease.setScalaVersion("2.11.0"); + List opts = mojoWithRelease.getScalacOptions(); + assertNotNull(opts); + assertFalse(opts.contains("-release")); + assertFalse(opts.contains("42")); + } + + @Test + public void scala2_12_should_skip_release_option() throws Exception { + mojoWithRelease.setScalaVersion("2.12.0"); + List opts = mojoWithRelease.getScalacOptions(); + assertNotNull(opts); + assertTrue(opts.contains("-release")); + assertTrue(opts.contains("42")); + } + + @Test + public void scala2_13_should_keep_release_option() throws Exception { + mojoWithRelease.setScalaVersion("2.13.0"); + List opts = mojoWithRelease.getScalacOptions(); + assertNotNull(opts); + assertTrue(opts.contains("-release")); + assertTrue(opts.contains("42")); + } + + @Test + public void scala2_12_scala_command_contain_target_and_release() throws Exception { + mojoWithRelease.setScalaVersion("2.12.0"); + final JavaMainCaller caller = mojoWithRelease.getScalaCommand(true, "String"); + assertNotNull(caller); + assertTrue(caller instanceof JavaMainCallerArgs); + + final JavaMainCallerArgs callerJvm = (JavaMainCallerArgs) caller; + assertNotNull(callerJvm.getArgs()); + assertEquals(3, callerJvm.getArgs().size()); + assertTrue(callerJvm.getArgs().contains("-release")); + assertTrue(callerJvm.getArgs().contains("42")); + assertTrue(callerJvm.getArgs().contains("-target:jvm-1.8")); + } } From e264021e7172cbc7c0e90417eac028a8e0c3c03f Mon Sep 17 00:00:00 2001 From: "James Z.M. Gao" Date: Tue, 5 Apr 2022 00:50:03 +0800 Subject: [PATCH 2/3] revert getEmptyScalaCommand to private method --- .../java/scala_maven/ScalaMojoSupport.java | 8 +++- .../scala_maven/ScalaMojoSupportTest.java | 38 +++++++------------ 2 files changed, 19 insertions(+), 27 deletions(-) diff --git a/src/main/java/scala_maven/ScalaMojoSupport.java b/src/main/java/scala_maven/ScalaMojoSupport.java index 86210049..d12abb22 100644 --- a/src/main/java/scala_maven/ScalaMojoSupport.java +++ b/src/main/java/scala_maven/ScalaMojoSupport.java @@ -497,11 +497,15 @@ private DependencyNodeFilter createScalaDistroDependencyFilter() throws Exceptio final JavaMainCaller getScalaCommand(final boolean forkOverride, final String mainClass) throws Exception { JavaMainCaller cmd = getEmptyScalaCommand(mainClass, forkOverride); + getScalaCommand0(cmd); + return cmd; + } + + final void getScalaCommand0(final JavaMainCaller cmd) throws Exception { for (String option : getScalacOptions()) { cmd.addArgs(option); } cmd.addJvmArgs(jvmArgs); - return cmd; } /** @@ -524,7 +528,7 @@ final JavaMainCaller getEmptyScalaCommand(final String mainClass) throws Excepti * if you are invoking the REPL. * @return a {@link JavaMainCaller} to use to invoke the given command. */ - JavaMainCaller getEmptyScalaCommand(final String mainClass, final boolean forkOverride) + private JavaMainCaller getEmptyScalaCommand(final String mainClass, final boolean forkOverride) throws Exception { // If we are deviating from the plugin settings, let the user know diff --git a/src/test/java/scala_maven/ScalaMojoSupportTest.java b/src/test/java/scala_maven/ScalaMojoSupportTest.java index c226960b..5db5300f 100644 --- a/src/test/java/scala_maven/ScalaMojoSupportTest.java +++ b/src/test/java/scala_maven/ScalaMojoSupportTest.java @@ -12,8 +12,8 @@ import java.util.List; import org.junit.Test; -import scala_maven_executions.JavaMainCaller; import scala_maven_executions.JavaMainCallerSupport; +import scala_maven_executions.SpawnMonitor; public class ScalaMojoSupportTest { @@ -74,12 +74,7 @@ public ScalaMojoSupportWithRelease() { } public List getScalacOptions() throws Exception { - try { - return super.getScalacOptions(); - } catch (final Exception e) { - e.printStackTrace(); - throw e; - } + return super.getScalacOptions(); } public void setScalaVersion(final String v) { @@ -88,16 +83,11 @@ public void setScalaVersion(final String v) { @Override protected void doExecute() throws Exception {} - - @Override - JavaMainCaller getEmptyScalaCommand(final String mainClass, final boolean forkOverride) { - return new JavaMainCallerArgs(this); - } } static class JavaMainCallerArgs extends JavaMainCallerSupport { - public JavaMainCallerArgs(final ScalaMojoSupport mojo) { - super(mojo, null, null, null, null); + public JavaMainCallerArgs() { + super(null, null, null, null, null); } public List getArgs() { @@ -105,7 +95,7 @@ public List getArgs() { } @Override - public scala_maven_executions.SpawnMonitor spawn(boolean displayCmd) throws Exception { + public SpawnMonitor spawn(boolean displayCmd) throws Exception { return null; } @@ -150,15 +140,13 @@ public void scala2_13_should_keep_release_option() throws Exception { @Test public void scala2_12_scala_command_contain_target_and_release() throws Exception { mojoWithRelease.setScalaVersion("2.12.0"); - final JavaMainCaller caller = mojoWithRelease.getScalaCommand(true, "String"); - assertNotNull(caller); - assertTrue(caller instanceof JavaMainCallerArgs); - - final JavaMainCallerArgs callerJvm = (JavaMainCallerArgs) caller; - assertNotNull(callerJvm.getArgs()); - assertEquals(3, callerJvm.getArgs().size()); - assertTrue(callerJvm.getArgs().contains("-release")); - assertTrue(callerJvm.getArgs().contains("42")); - assertTrue(callerJvm.getArgs().contains("-target:jvm-1.8")); + final JavaMainCallerArgs caller = new JavaMainCallerArgs(); + mojoWithRelease.getScalaCommand0(caller); + + assertNotNull(caller.getArgs()); + assertEquals(3, caller.getArgs().size()); + assertTrue(caller.getArgs().contains("-release")); + assertTrue(caller.getArgs().contains("42")); + assertTrue(caller.getArgs().contains("-target:jvm-1.8")); } } From ffda901fee6906afd2840e9858d8870d7a60aa3e Mon Sep 17 00:00:00 2001 From: "James Z.M. Gao" Date: Tue, 5 Apr 2022 00:54:11 +0800 Subject: [PATCH 3/3] rename getScalaCommand0 to populateArgs --- src/main/java/scala_maven/ScalaMojoSupport.java | 4 ++-- src/test/java/scala_maven/ScalaMojoSupportTest.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/scala_maven/ScalaMojoSupport.java b/src/main/java/scala_maven/ScalaMojoSupport.java index d12abb22..97e39d31 100644 --- a/src/main/java/scala_maven/ScalaMojoSupport.java +++ b/src/main/java/scala_maven/ScalaMojoSupport.java @@ -497,11 +497,11 @@ private DependencyNodeFilter createScalaDistroDependencyFilter() throws Exceptio final JavaMainCaller getScalaCommand(final boolean forkOverride, final String mainClass) throws Exception { JavaMainCaller cmd = getEmptyScalaCommand(mainClass, forkOverride); - getScalaCommand0(cmd); + populateArgs(cmd); return cmd; } - final void getScalaCommand0(final JavaMainCaller cmd) throws Exception { + final void populateArgs(final JavaMainCaller cmd) throws Exception { for (String option : getScalacOptions()) { cmd.addArgs(option); } diff --git a/src/test/java/scala_maven/ScalaMojoSupportTest.java b/src/test/java/scala_maven/ScalaMojoSupportTest.java index 5db5300f..264c84ad 100644 --- a/src/test/java/scala_maven/ScalaMojoSupportTest.java +++ b/src/test/java/scala_maven/ScalaMojoSupportTest.java @@ -141,7 +141,7 @@ public void scala2_13_should_keep_release_option() throws Exception { public void scala2_12_scala_command_contain_target_and_release() throws Exception { mojoWithRelease.setScalaVersion("2.12.0"); final JavaMainCallerArgs caller = new JavaMainCallerArgs(); - mojoWithRelease.getScalaCommand0(caller); + mojoWithRelease.populateArgs(caller); assertNotNull(caller.getArgs()); assertEquals(3, caller.getArgs().size());