Update build dependencies

This commit is contained in:
Tad Fisher
2021-02-01 14:56:06 -08:00
parent 13958d35bf
commit 55b3b60535
20 changed files with 284 additions and 82 deletions

View File

@@ -4,6 +4,7 @@ import dev.minutest.Tests
import dev.minutest.experimental.minus
import dev.minutest.junit.JUnit5Minutests
import dev.minutest.rootContext
import dev.minutest.test
import org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler.BINTRAY_JCENTER_URL
import org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler.MAVEN_CENTRAL_URL
import strikt.api.expectThat

View File

@@ -4,6 +4,7 @@ import dev.minutest.Tests
import dev.minutest.experimental.minus
import dev.minutest.junit.JUnit5Minutests
import dev.minutest.rootContext
import dev.minutest.test
import strikt.api.expectThat
import strikt.assertions.all
import strikt.assertions.containsExactly

View File

@@ -3,6 +3,7 @@ package org.nixos.gradle2nix
import dev.minutest.Tests
import dev.minutest.junit.JUnit5Minutests
import dev.minutest.rootContext
import dev.minutest.test
import strikt.api.expectThat
import strikt.assertions.all
import strikt.assertions.containsExactly

View File

@@ -5,6 +5,7 @@ import dev.minutest.experimental.FOCUS
import dev.minutest.experimental.minus
import dev.minutest.junit.JUnit5Minutests
import dev.minutest.rootContext
import dev.minutest.test
import strikt.api.expectThat
import strikt.assertions.contains
import strikt.assertions.containsExactly

View File

@@ -3,6 +3,7 @@ package org.nixos.gradle2nix
import dev.minutest.Tests
import dev.minutest.junit.JUnit5Minutests
import dev.minutest.rootContext
import dev.minutest.test
import strikt.api.expectThat
import strikt.assertions.containsExactly

View File

@@ -3,6 +3,7 @@ package org.nixos.gradle2nix
import dev.minutest.Tests
import dev.minutest.junit.JUnit5Minutests
import dev.minutest.rootContext
import dev.minutest.test
import org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler.BINTRAY_JCENTER_URL
import strikt.api.expectThat
import strikt.assertions.all

View File

@@ -5,9 +5,13 @@ import dev.minutest.ContextBuilder
import dev.minutest.MinutestFixture
import dev.minutest.Node
import dev.minutest.TestContextBuilder
import dev.minutest.closeableFixture
import dev.minutest.afterEach
import dev.minutest.beforeEach
import dev.minutest.experimental.SKIP
import dev.minutest.experimental.TransformingAnnotation
import dev.minutest.given
import dev.minutest.givenClosable
import dev.minutest.given_
import io.javalin.Javalin
import okio.buffer
import okio.source
@@ -155,8 +159,8 @@ class ProjectFixture(private val parent: TestFixture, private val source: File)
fun ContextBuilder<*>.withRepository(
name: String,
block: TestContextBuilder<*, RepositoryFixture>.() -> Unit
) = derivedContext<RepositoryFixture>("with repository: ${name}") {
closeableFixture {
) = derivedContext<RepositoryFixture>("with repository: $name") {
givenClosable {
RepositoryFixture(Javalin.create { config ->
config.addStaticFiles("/repositories/$name")
}.start(9999))
@@ -174,9 +178,7 @@ fun ContextBuilder<*>.withFixture(
}
val fixtureRoot = Paths.get(url).toFile().absoluteFile
deriveFixture {
TestFixture(name, fixtureRoot)
}
given { TestFixture(name, fixtureRoot) }
val testRoots = fixtureRoot.listFiles()!!
.filter { it.isDirectory }
@@ -185,9 +187,9 @@ fun ContextBuilder<*>.withFixture(
testRoots.forEach { testRoot ->
derivedContext<ProjectFixture>(testRoot.name) {
deriveFixture { ProjectFixture(this, testRoot) }
before { copy() }
after { close() }
given_ { ProjectFixture(it, testRoot) }
beforeEach { copy() }
afterEach { close() }
block()
}
}

View File

@@ -3,6 +3,7 @@ package org.nixos.gradle2nix
import dev.minutest.Tests
import dev.minutest.junit.JUnit5Minutests
import dev.minutest.rootContext
import dev.minutest.test
import strikt.api.expectThat
import strikt.assertions.isEqualTo
import java.io.File

View File

@@ -9,7 +9,11 @@ import org.apache.ivy.core.module.id.ArtifactRevisionId
import org.apache.ivy.core.module.id.ModuleRevisionId
import org.apache.ivy.core.resolve.DownloadOptions
import org.apache.ivy.core.settings.IvySettings
import org.apache.ivy.core.settings.TimeoutConstraint
import org.apache.ivy.plugins.repository.Repository
import org.apache.ivy.plugins.repository.url.URLRepository
import org.apache.ivy.plugins.repository.url.URLResource
import org.apache.ivy.plugins.resolver.AbstractResolver
import org.apache.ivy.plugins.resolver.IBiblioResolver
import org.apache.ivy.plugins.resolver.URLResolver
import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader
@@ -17,13 +21,20 @@ import org.codehaus.plexus.util.ReaderFactory
import org.codehaus.plexus.util.xml.pull.XmlPullParserException
import org.gradle.api.Project
import org.gradle.api.artifacts.repositories.ArtifactRepository
import org.gradle.api.artifacts.repositories.AuthenticationContainer
import org.gradle.api.artifacts.repositories.AuthenticationSupported
import org.gradle.api.artifacts.repositories.IvyArtifactRepository
import org.gradle.api.artifacts.repositories.MavenArtifactRepository
import org.gradle.api.artifacts.repositories.UrlArtifactRepository
import org.gradle.api.credentials.AwsCredentials
import org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository
import org.gradle.api.internal.artifacts.repositories.resolver.IvyResolver
import org.gradle.api.logging.Logger
import org.gradle.api.logging.Logging
import org.gradle.authentication.aws.AwsImAuthentication
import org.gradle.internal.authentication.AllSchemesAuthentication
import java.io.IOException
import java.net.URI
import org.apache.ivy.core.module.descriptor.Artifact as IvyArtifact
import org.apache.ivy.core.module.descriptor.DefaultArtifact as IvyDefaultArtifact
import org.apache.ivy.plugins.resolver.RepositoryResolver as IvyRepositoryResolver
@@ -66,6 +77,7 @@ internal class MavenResolver(
isM2compatible = true
settings = ivySettings
setCache(cacheManager(project, scope, ivySettings, repository).name)
setRepository(resolverRepository(repository))
}
override fun resolve(artifactId: DefaultArtifactIdentifier, sha256: String?): DefaultArtifact? {
@@ -142,6 +154,7 @@ internal class IvyResolver(
for (p in ivyResolver.artifactPatterns) addArtifactPattern(p)
settings = ivySettings
setCache(cacheManager(project, scope, ivySettings, repository).name)
setRepository(resolverRepository(repository))
}
override fun resolve(artifactId: DefaultArtifactIdentifier, sha256: String?): DefaultArtifact? {
@@ -223,4 +236,39 @@ private fun ArtifactIdentifier.filename(
append(".", extension)
}
private val downloadOptions = DownloadOptions().apply { log = LogOptions.LOG_QUIET }
private val downloadOptions = DownloadOptions().apply { log = LogOptions.LOG_QUIET }
private fun <T> AbstractResolver.resolverRepository(
repository: T
) : Repository
where T : UrlArtifactRepository,
T : AuthenticationSupported =
when (val scheme = repository.url.scheme) {
"s3" -> s3Repository(repository.authentication, LazyTimeoutConstraint(this))
"http", "https" -> URLRepository(LazyTimeoutConstraint(this))
else -> throw IllegalStateException("Unknown repository URL scheme: $scheme")
}
private fun s3Repository(
authContainer: AuthenticationContainer,
timeoutConstraint: TimeoutConstraint
): Repository {
val auth = authContainer.firstOrNull { auth ->
auth is AllSchemesAuthentication || auth is AwsImAuthentication
}
checkNotNull(auth) { "S3 resource should either specify AwsImAuthentication or provide some AwsCredentials." }
return S3Repository(
credentials = (auth as? AllSchemesAuthentication)?.credentials as? AwsCredentials,
endpoint = System.getProperty("org.gradle.s3.endpoint")?.let { URI(it) }
)
}
private class LazyTimeoutConstraint(
private val resolver: AbstractResolver
) : TimeoutConstraint {
override fun getConnectionTimeout(): Int =
resolver.timeoutConstraint?.connectionTimeout ?: -1
override fun getReadTimeout(): Int =
resolver.timeoutConstraint?.readTimeout ?: -1
}