Fix golden data for projects using local M2 dir

This commit is contained in:
Tad Fisher
2023-10-06 16:48:24 -07:00
parent 689a6a2090
commit f618923fd0
7 changed files with 79 additions and 3 deletions

View File

@@ -1,6 +1,8 @@
package org.nixos.gradle2nix package org.nixos.gradle2nix
import java.io.File import java.io.File
import java.io.FileFilter
import java.net.URI
import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
import kotlinx.serialization.json.decodeFromStream import kotlinx.serialization.json.decodeFromStream
@@ -66,6 +68,7 @@ fun processDependencies(config: Config): Map<String, Map<String, Artifact>> {
) )
val metadata = verifier.verificationMetadata[componentId] val metadata = verifier.verificationMetadata[componentId]
?: verifyComponentFilesInCache(config, componentId) ?: verifyComponentFilesInCache(config, componentId)
?: verifyComponentFilesInTestRepository(config, componentId)
if (metadata == null) { if (metadata == null) {
config.logger.warn("$id: not present in metadata or cache; skipping") config.logger.warn("$id: not present in metadata or cache; skipping")
return@mapNotNull null return@mapNotNull null
@@ -117,7 +120,7 @@ private fun verifyComponentFilesInCache(
if (!cacheDir.exists()) { if (!cacheDir.exists()) {
return null return null
} }
val verifications = cacheDir.walkBottomUp().filter { it.isFile }.map { f -> val verifications = cacheDir.walk().filter { it.isFile }.map { f ->
ArtifactVerificationMetadata( ArtifactVerificationMetadata(
f.name, f.name,
listOf(Checksum(ChecksumKind.sha256, f.sha256())) listOf(Checksum(ChecksumKind.sha256, f.sha256()))
@@ -127,6 +130,26 @@ private fun verifyComponentFilesInCache(
return ComponentVerificationMetadata(component, verifications.toList()) return ComponentVerificationMetadata(component, verifications.toList())
} }
private fun verifyComponentFilesInTestRepository(
config: Config,
component: ModuleComponentIdentifier
): ComponentVerificationMetadata? {
if (m2 == null) return null
val dir = File(URI.create(m2)).resolve("${component.group.replace(".", "/")}/${component.module}/${component.version}")
if (!dir.exists()) {
config.logger.log("$component: not found in m2 repository; tried $dir")
return null
}
val verifications = dir.walk().filter { it.isFile && it.name.startsWith(component.module) }.map { f ->
ArtifactVerificationMetadata(
f.name,
listOf(Checksum(ChecksumKind.sha256, f.sha256()))
)
}
config.logger.log("$component: obtained artifact hashes from test Maven repository.")
return ComponentVerificationMetadata(component, verifications.toList())
}
private fun File.sha256(): String { private fun File.sha256(): String {
val source = HashingSource.sha256(source()) val source = HashingSource.sha256(source())
source.buffer().readAll(blackholeSink()) source.buffer().readAll(blackholeSink())

View File

@@ -26,7 +26,8 @@ class GoldenTest : FunSpec({
context("plugin") { context("plugin") {
golden("plugin/resolves-from-default-repo") golden("plugin/resolves-from-default-repo")
} }
context("s3") { // FIXME Need s3mock or similar to generate golden data.
xcontext("s3") {
golden("s3/maven") golden("s3/maven")
golden("s3/maven-snapshot") golden("s3/maven-snapshot")
} }

View File

@@ -3,7 +3,7 @@ plugins {
} }
repositories { repositories {
maven { url = uri("file:/../../../../") } maven { url = uri(System.getProperty("org.nixos.gradle2nix.m2")) }
} }
dependencies { dependencies {

View File

@@ -1,2 +1,14 @@
{ {
"org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT:20070310.181613-3": {
"test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": {
"urls": [
],
"hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE="
},
"test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": {
"urls": [
],
"hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs="
}
}
} }

View File

@@ -1,2 +1,14 @@
{ {
"org.apache:test-SNAPSHOT1:2.0.2-SNAPSHOT:20070310.181613-3": {
"test-SNAPSHOT1-2.0.2-20070310.181613-3.jar": {
"urls": [
],
"hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE="
},
"test-SNAPSHOT1-2.0.2-20070310.181613-3.pom": {
"urls": [
],
"hash": "sha256-HkNYH8bwRqh0B760aORWKwMuDrO1E89Y8tx0esl66gs="
}
}
} }

View File

@@ -1,2 +1,16 @@
{ {
"org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT": {
"test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": {
"urls": [
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar"
],
"hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE="
},
"test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": {
"urls": [
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom"
],
"hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8="
}
}
} }

View File

@@ -1,2 +1,16 @@
{ {
"org.apache:test-SNAPSHOT2:2.0.2-SNAPSHOT": {
"test-SNAPSHOT2-2.0.2-SNAPSHOT.jar": {
"urls": [
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.jar"
],
"hash": "sha256-a99mtb8qROZYvqLuhmlasVCgbmAL9nzVzOJFrVSWLGE="
},
"test-SNAPSHOT2-2.0.2-SNAPSHOT.pom": {
"urls": [
"file:/home/tad/proj/gradle2nix/fixtures/repositories/m2/org/apache/test-SNAPSHOT2/2.0.2-SNAPSHOT/test-SNAPSHOT2-2.0.2-SNAPSHOT.pom"
],
"hash": "sha256-XCACfgVM2OthMcb9rU/nVQvjiJawqxOd5CSRmvql1O8="
}
}
} }