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]