Skip to content

Commit

Permalink
SONARGRADL-139 Fix ClassCastException when Java compiler args contain…
Browse files Browse the repository at this point in the history
… non-String values
  • Loading branch information
leveretka authored Mar 22, 2024
1 parent 9c2cc39 commit 1c7e340
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/main/java/org/sonarqube/gradle/JavaCompilerUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,8 @@ private static boolean areToolchainsSupported() {
// Inspired by
// https://github.com/gradle/gradle/blob/d3e4faca3df507176b67d9b3bb3ee91bf2aa070c/subprojects/language-java/src/main/java/org/gradle/api/tasks/compile/JavaCompile.java#L400
private static void configureCompatibilityOptions(JavaCompile compileTask, JavaCompilerConfiguration config) {
config.setEnablePreview(compileTask.getOptions().getCompilerArgs().stream().anyMatch(it -> it.equals("--enable-preview")));
List<?> compilerArgs = compileTask.getOptions().getCompilerArgs();
config.setEnablePreview(compilerArgs.stream().anyMatch(it -> it.equals("--enable-preview")));
if (areToolchainsSupported() && ToolchainUtils.hasToolchains(compileTask)) {
ToolchainUtils.configureCompatibilityOptions(compileTask, config);
} else {
Expand Down
30 changes: 30 additions & 0 deletions src/test/groovy/org/sonarqube/gradle/FunctionalTests.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -325,4 +325,34 @@ class FunctionalTests extends Specification {
props.load(outFile.newDataInputStream())
props."sonar.java.enablePreview" == "true"
}

def "don't crash if compiler arg isn't String"() {
given:
settingsFile << "rootProject.name = 'java-task-toolchains'"
buildFile << """
plugins {
id 'java'
id 'org.sonarqube'
}
compileJava {
options.compilerArgs = [
file("/")
]
}
"""

when:
GradleRunner.create()
.withGradleVersion(gradleVersion)
.withProjectDir(testProjectDir.toFile())
.forwardOutput()
.withArguments('sonarqube', '-Dsonar.scanner.dumpToFile=' + outFile.toAbsolutePath())
.withPluginClasspath()
.build()


then:
noExceptionThrown()
}
}

0 comments on commit 1c7e340

Please sign in to comment.