slachiewicz commented on code in PR #760:
URL: 
https://github.com/apache/maven-invoker-plugin/pull/760#discussion_r4174405762


##########
src/test/java/org/apache/maven/plugins/invoker/InvokerMojoTest.java:
##########
@@ -223,6 +229,100 @@ private MavenSession sessionWithUserProperties(Properties 
userProperties) {
         return session;
     }
 
+    @Test
+    void scriptTargetBytecodeParameterWinsOverCompilerProperties() throws 
Exception {
+        // given
+        MavenProject mavenProject = getMavenProject();
+        mavenProject.getProperties().setProperty("maven.compiler.release", 
"17");
+        mavenProject.getProperties().setProperty("maven.compiler.target", 
"11");
+        setVariableValueToObject(invokerMojo, "project", mavenProject);
+        setVariableValueToObject(invokerMojo, "session", newSession(new 
DefaultMavenExecutionRequest()));
+        setVariableValueToObject(invokerMojo, "scriptTargetBytecode", "8");
+
+        // when
+        String targetBytecode = 
invokeHandleScriptRunnerAndGetGroovyTargetBytecode();
+
+        // then
+        assertThat(targetBytecode).isEqualTo("8");
+    }
+
+    @Test
+    void scriptTargetBytecodeFallsBackToMavenCompilerReleaseBeforeTarget() 
throws Exception {
+        // given
+        MavenProject mavenProject = getMavenProject();
+        mavenProject.getProperties().setProperty("maven.compiler.release", 
"17");
+        mavenProject.getProperties().setProperty("maven.compiler.target", 
"11");
+        setVariableValueToObject(invokerMojo, "project", mavenProject);
+        setVariableValueToObject(invokerMojo, "session", newSession(new 
DefaultMavenExecutionRequest()));
+
+        // when
+        String targetBytecode = 
invokeHandleScriptRunnerAndGetGroovyTargetBytecode();
+
+        // then
+        assertThat(targetBytecode).isEqualTo("17");
+    }
+
+    @Test
+    void scriptTargetBytecodeFallsBackToMavenCompilerTargetProperty() throws 
Exception {
+        // given
+        MavenProject mavenProject = getMavenProject();
+        mavenProject.getProperties().setProperty("maven.compiler.target", 
"11");
+        setVariableValueToObject(invokerMojo, "project", mavenProject);
+        setVariableValueToObject(invokerMojo, "session", newSession(new 
DefaultMavenExecutionRequest()));
+
+        // when
+        String targetBytecode = 
invokeHandleScriptRunnerAndGetGroovyTargetBytecode();
+
+        // then
+        assertThat(targetBytecode).isEqualTo("11");
+    }
+
+    @Test
+    void scriptTargetBytecodeUserPropertyWinsOverProjectProperty() throws 
Exception {
+        // given
+        MavenProject mavenProject = getMavenProject();
+        mavenProject.getProperties().setProperty("maven.compiler.release", 
"17");
+        MavenExecutionRequest request = new DefaultMavenExecutionRequest();
+        request.getUserProperties().setProperty("maven.compiler.release", 
"21");
+        setVariableValueToObject(invokerMojo, "project", mavenProject);
+        setVariableValueToObject(invokerMojo, "session", newSession(request));
+
+        // when
+        String targetBytecode = 
invokeHandleScriptRunnerAndGetGroovyTargetBytecode();
+
+        // then: -Dmaven.compiler.release on the command line wins, as it does 
for the Compiler Plugin
+        assertThat(targetBytecode).isEqualTo("21");
+    }
+
+    @Test
+    void scriptTargetBytecodeIsUnsetWhenNeitherParameterNorPropertyIsPresent() 
throws Exception {
+        // given
+        MavenProject mavenProject = getMavenProject();
+        setVariableValueToObject(invokerMojo, "project", mavenProject);
+        setVariableValueToObject(invokerMojo, "session", newSession(new 
DefaultMavenExecutionRequest()));
+
+        // when
+        String targetBytecode = 
invokeHandleScriptRunnerAndGetGroovyTargetBytecode();
+
+        // then
+        assertThat(targetBytecode).isNull();
+    }
+
+    private static MavenSession newSession(MavenExecutionRequest request) {
+        return new MavenSession(null, (RepositorySystemSession) null, request, 
null);

Review Comment:
   Switched to a Mockito mock in 12ed3fc; `newSession` is gone, the helper also 
stubs `getSystemProperties()`, and a new test covers that tier. Also added 
`src/it/script-target-bytecode`, which checks the compiled level through 
Groovy's record emulation.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to