From f95e23427cddfb3141d92d6dd5aca8c327047643 Mon Sep 17 00:00:00 2001 From: "Rodrigo B. de Oliveira" Date: Tue, 12 Mar 2019 19:45:05 -0300 Subject: [PATCH] Let Kotlin DSL resolver return given Java home Resolves gradle/kotlin-dsl#1354 --- .../KotlinScriptDependenciesResolverTest.kt | 12 +++++++++++ .../KotlinBuildScriptDependenciesResolver.kt | 20 ++++++++++--------- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/subprojects/kotlin-dsl/src/integTest/kotlin/org/gradle/kotlin/dsl/resolver/KotlinScriptDependenciesResolverTest.kt b/subprojects/kotlin-dsl/src/integTest/kotlin/org/gradle/kotlin/dsl/resolver/KotlinScriptDependenciesResolverTest.kt index 13386afb8f71..19903fc6ae88 100644 --- a/subprojects/kotlin-dsl/src/integTest/kotlin/org/gradle/kotlin/dsl/resolver/KotlinScriptDependenciesResolverTest.kt +++ b/subprojects/kotlin-dsl/src/integTest/kotlin/org/gradle/kotlin/dsl/resolver/KotlinScriptDependenciesResolverTest.kt @@ -58,6 +58,18 @@ class KotlinScriptDependenciesResolverTest : AbstractKotlinIntegrationTest() { assertSucceeds() } + @Test + fun `returns given Java home`() { + + val javaHome = System.getProperty("java.home") + val env = arrayOf("gradleJavaHome" to javaHome) + assertThat( + resolvedScriptDependencies(env = *env)?.javaHome, + equalTo(javaHome) + ) + } + + @Test fun `succeeds on init script`() { diff --git a/subprojects/kotlin-dsl/src/main/kotlin/org/gradle/kotlin/dsl/resolver/KotlinBuildScriptDependenciesResolver.kt b/subprojects/kotlin-dsl/src/main/kotlin/org/gradle/kotlin/dsl/resolver/KotlinBuildScriptDependenciesResolver.kt index 7fce79031c47..971cc3f924cf 100644 --- a/subprojects/kotlin-dsl/src/main/kotlin/org/gradle/kotlin/dsl/resolver/KotlinBuildScriptDependenciesResolver.kt +++ b/subprojects/kotlin-dsl/src/main/kotlin/org/gradle/kotlin/dsl/resolver/KotlinBuildScriptDependenciesResolver.kt @@ -139,12 +139,12 @@ class KotlinBuildScriptDependenciesResolver @VisibleForTesting constructor( previousDependencies: KotlinScriptExternalDependencies? ): KotlinScriptExternalDependencies? { - val scriptModelRequest = scriptModelRequestFrom(scriptFile, environment, cid) - log(SubmittedModelRequest(cid, scriptFile, scriptModelRequest)) + val request = scriptModelRequestFrom(scriptFile, environment, cid) + log(SubmittedModelRequest(cid, scriptFile, request)) - val response = DefaultKotlinBuildScriptModelRepository.scriptModelFor(scriptModelRequest) + val response = DefaultKotlinBuildScriptModelRepository.scriptModelFor(request) if (response == null) { - log(RequestCancelled(cid, scriptFile, scriptModelRequest)) + log(RequestCancelled(cid, scriptFile, request)) return null } log(ReceivedModelResponse(cid, scriptFile, response)) @@ -155,7 +155,7 @@ class KotlinBuildScriptDependenciesResolver @VisibleForTesting constructor( return when { response.exceptions.isEmpty() -> - dependenciesFrom(response).also { + dependenciesFrom(request, response).also { log(ResolvedDependencies(cid, scriptFile, it)) } previousDependencies != null && previousDependencies.classpath.count() > response.classPath.size -> @@ -163,7 +163,7 @@ class KotlinBuildScriptDependenciesResolver @VisibleForTesting constructor( log(ResolvedToPreviousWithErrors(cid, scriptFile, previousDependencies, response.exceptions)) } else -> - dependenciesFrom(response).also { + dependenciesFrom(request, response).also { log(ResolvedDependenciesWithErrors(cid, scriptFile, it, response.exceptions)) } } @@ -207,11 +207,12 @@ class KotlinBuildScriptDependenciesResolver @VisibleForTesting constructor( ?: GradleInstallation.Wrapper private - fun dependenciesFrom(response: KotlinBuildScriptModel) = + fun dependenciesFrom(request: KotlinBuildScriptModelRequest, response: KotlinBuildScriptModel) = KotlinBuildScriptDependencies( response.classPath, response.sourcePath, - response.implicitImports + response.implicitImports, + request.javaHome?.path ) } @@ -220,7 +221,8 @@ internal class KotlinBuildScriptDependencies( override val classpath: Iterable, override val sources: Iterable, - override val imports: Iterable + override val imports: Iterable, + override val javaHome: String? = null ) : KotlinScriptExternalDependencies