Migrate tests to stutter; bring compat down to 4.4.1

This commit is contained in:
Tad Fisher
2019-06-03 15:41:44 -07:00
parent 18be7ba80c
commit fbbc26e085
9 changed files with 434 additions and 72 deletions

View File

@@ -4,14 +4,15 @@ import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.artifacts.dsl.RepositoryHandler
import org.gradle.api.artifacts.repositories.MavenArtifactRepository
import org.gradle.api.internal.GradleInternal
import org.gradle.api.invocation.Gradle
import org.gradle.api.tasks.wrapper.Wrapper
import org.gradle.kotlin.dsl.named
import org.gradle.kotlin.dsl.newInstance
import org.gradle.kotlin.dsl.getByName
import org.gradle.kotlin.dsl.support.serviceOf
import org.gradle.plugin.management.PluginRequest
import org.gradle.tooling.provider.model.ToolingModelBuilder
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
import org.gradle.util.GradleVersion
import java.net.URL
import java.util.*
import org.nixos.gradle2nix.Gradle as NixGradle
@@ -64,12 +65,12 @@ private class NixToolingModelBuilder(
}
private fun Project.buildGradle(): DefaultGradle =
with(tasks.named<Wrapper>("wrapper").get()) {
with(tasks.getByName<Wrapper>("wrapper")) {
DefaultGradle(
version = gradleVersion,
type = distributionType.name.toLowerCase(Locale.US),
url = distributionUrl,
sha256 = distributionSha256Sum ?: fetchDistSha256(distributionUrl),
sha256 = sha256,
nativeVersion = gradle.gradleHomeDir?.resolve("lib")?.listFiles()
?.firstOrNull { f -> nativePlatformJarRegex matches f.name }?.let { nf ->
nativePlatformJarRegex.find(nf.name)?.groupValues?.get(1)
@@ -85,7 +86,7 @@ private fun Project.buildGradle(): DefaultGradle =
}
private fun Project.buildPlugins(pluginRequests: List<PluginRequest>): DefaultDependencies =
with(objects.newInstance<PluginResolver>(pluginRequests)) {
with(PluginResolver(gradle as GradleInternal, pluginRequests)) {
DefaultDependencies(repositories.repositories(), artifacts())
}
@@ -151,3 +152,12 @@ internal fun RepositoryHandler.repositories() = DefaultRepositories(
DefaultMaven(listOf(repo.url.toString()) + repo.artifactUrls.map { it.toString() })
}
)
private val Wrapper.sha256: String
get() {
return if (GradleVersion.current() < GradleVersion.version("4.5")) {
fetchDistSha256(distributionUrl)
} else {
distributionSha256Sum ?: fetchDistSha256(distributionUrl)
}
}

View File

@@ -1,8 +1,10 @@
package org.nixos.gradle2nix
import org.gradle.api.artifacts.ExternalModuleDependency
import org.gradle.api.internal.GradleInternal
import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.VersionSelectorScheme
import org.gradle.api.internal.plugins.PluginImplementation
import org.gradle.kotlin.dsl.support.serviceOf
import org.gradle.plugin.management.PluginRequest
import org.gradle.plugin.management.internal.PluginRequestInternal
import org.gradle.plugin.use.PluginId
@@ -11,22 +13,21 @@ import org.gradle.plugin.use.resolve.internal.ArtifactRepositoriesPluginResolver
import org.gradle.plugin.use.resolve.internal.PluginResolution
import org.gradle.plugin.use.resolve.internal.PluginResolutionResult
import org.gradle.plugin.use.resolve.internal.PluginResolveContext
import javax.inject.Inject
open class PluginResolver @Inject constructor(
private val pluginDependencyResolutionServices: PluginDependencyResolutionServices,
versionSelectorScheme: VersionSelectorScheme,
internal class PluginResolver(
gradle: GradleInternal,
private val pluginRequests: Collection<PluginRequest>
) {
val repositories by lazy {
pluginDependencyResolutionServices.resolveRepositoryHandler
}
private val pluginDependencyResolutionServices = gradle.serviceOf<PluginDependencyResolutionServices>()
private val versionSelectorScheme = gradle.serviceOf<VersionSelectorScheme>()
private val artifactRepositoriesPluginResolver = ArtifactRepositoriesPluginResolver(
pluginDependencyResolutionServices,
versionSelectorScheme
)
val repositories = pluginDependencyResolutionServices.resolveRepositoryHandler
private val resolver by lazy {
DependencyResolver(
pluginDependencyResolutionServices.configurationContainer,