From ffcf2c5f596825e7432f2ee5b16ce8438c4e7964 Mon Sep 17 00:00:00 2001 From: Jendrik Johannes Date: Wed, 26 Feb 2025 09:25:42 +0100 Subject: [PATCH 1/3] Extend Gradle integration test to check checksums and marker Signed-off-by: Jendrik Johannes --- .../jackson/integtest/gradle/build.gradle.kts | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/test/resources/com/fasterxml/jackson/integtest/gradle/build.gradle.kts b/src/test/resources/com/fasterxml/jackson/integtest/gradle/build.gradle.kts index 580047d..1cd4cbc 100644 --- a/src/test/resources/com/fasterxml/jackson/integtest/gradle/build.gradle.kts +++ b/src/test/resources/com/fasterxml/jackson/integtest/gradle/build.gradle.kts @@ -41,6 +41,8 @@ tasks.register("checkMetadata") { // Create dependencies to all Modules references in the BOM val allModules = configurations.detachedConfiguration(*allJacksonModule.map { dependencies.create(it) }.toTypedArray()) + val modulesWithGradleMetadata = allJacksonModule.filter { m -> modulesWithoutGradleMetadata.none { m.startsWith(it) } } + // Tell Gradle to do the dependency resolution and return the result with dependency information val allModulesResolved = resolveJacksonModules(allModules) @@ -72,9 +74,27 @@ tasks.register("checkMetadata") { message += "Dependencies of ${pomModule.id} are wrong in Gradle Metadata:" + "\n POM: ${pomDependencies.joinToString()}" + "\n Gradle: ${gmmDependencies.joinToString()}" + - "\n" + "\n\n" } } + + val pomMetadataFiles = configurations.detachedConfiguration(*modulesWithGradleMetadata.map { dependencies.create("$it@pom") }.toTypedArray()) + val gradleMetadataFiles = configurations.detachedConfiguration(*modulesWithGradleMetadata.map { dependencies.create("$it@module") }.toTypedArray()) + val checksumFiles = configurations.detachedConfiguration(*modulesWithGradleMetadata.map { dependencies.create("$it@jar.md5") }.toTypedArray()) + + val pomsWithoutMarker = pomMetadataFiles.files.filter { !it.readText().contains("") }.map { it.name } + if (pomsWithoutMarker.isNotEmpty()) { + message += "POMs without Gradle Metadata marker:\n - ${pomsWithoutMarker.joinToString("\n - ")}\n\n" + } + + val checksumsFromFile = checksumFiles.associate { it.name.substringBeforeLast("-") to it.readText() } + val checksumsFromMetadata = gradleMetadataFiles.associate { it.name.substringBeforeLast("-") to it.readText().lines().first { it.contains("\"md5\"") }.substringAfterLast(": \"").replace("\"", "") } + val checksumsDiff = checksumsFromFile.filter { (k,v) -> checksumsFromMetadata[k] != v } + if (checksumsDiff.isNotEmpty()) { + message += "Checksums in Gradle Metadata are wrong:\n - ${checksumsDiff.keys.joinToString("\n - ")}\n\n" + throw RuntimeException(message) + } + if (message.isNotEmpty()) { throw RuntimeException(message) } From dd16498749fbd9d05c82f0e4acedf32b2ff13fae Mon Sep 17 00:00:00 2001 From: Jendrik Johannes Date: Fri, 28 Feb 2025 15:09:18 +0100 Subject: [PATCH 2/3] Test against 2.19.0-SNAPSHOT (temporarily) --- .../fasterxml/jackson/integtest/gradle/build.gradle.kts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/test/resources/com/fasterxml/jackson/integtest/gradle/build.gradle.kts b/src/test/resources/com/fasterxml/jackson/integtest/gradle/build.gradle.kts index 1cd4cbc..7c1c379 100644 --- a/src/test/resources/com/fasterxml/jackson/integtest/gradle/build.gradle.kts +++ b/src/test/resources/com/fasterxml/jackson/integtest/gradle/build.gradle.kts @@ -13,12 +13,11 @@ val modulesWithoutGradleMetadata = listOf( ) dependencies { - implementation(platform("com.fasterxml.jackson:jackson-bom:+")) + // implementation(platform("com.fasterxml.jackson:jackson-bom:+")) // 28-Apr-2023, tatu: Uncomment following (and comment ^^^) to test SNAPSHOT versions - // implementation(platform("com.fasterxml.jackson:jackson-bom:2.15.1-SNAPSHOT")) - // repositories.maven("https://oss.sonatype.org/content/repositories/snapshots") - // repositories.mavenCentral() + implementation(platform("com.fasterxml.jackson:jackson-bom:2.19.0-SNAPSHOT")) + repositories.maven("https://oss.sonatype.org/content/repositories/snapshots") } repositories.mavenCentral() From ad89a60028ed0a24bb356872f14b72879c87b2c2 Mon Sep 17 00:00:00 2001 From: Jendrik Johannes Date: Sat, 1 Mar 2025 12:38:11 +0100 Subject: [PATCH 3/3] When comparing `md5` hashes, add leading zeros if missing Signed-off-by: Jendrik Johannes --- .../com/fasterxml/jackson/integtest/gradle/build.gradle.kts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/test/resources/com/fasterxml/jackson/integtest/gradle/build.gradle.kts b/src/test/resources/com/fasterxml/jackson/integtest/gradle/build.gradle.kts index 7c1c379..ce303e5 100644 --- a/src/test/resources/com/fasterxml/jackson/integtest/gradle/build.gradle.kts +++ b/src/test/resources/com/fasterxml/jackson/integtest/gradle/build.gradle.kts @@ -87,7 +87,9 @@ tasks.register("checkMetadata") { } val checksumsFromFile = checksumFiles.associate { it.name.substringBeforeLast("-") to it.readText() } - val checksumsFromMetadata = gradleMetadataFiles.associate { it.name.substringBeforeLast("-") to it.readText().lines().first { it.contains("\"md5\"") }.substringAfterLast(": \"").replace("\"", "") } + val checksumsFromMetadata = gradleMetadataFiles.associate { it.name.substringBeforeLast("-") to it.readText().lines().first { + it.contains("\"md5\"") }.substringAfterLast(": \"").replace("\"", "").padStart(32, '0') + } val checksumsDiff = checksumsFromFile.filter { (k,v) -> checksumsFromMetadata[k] != v } if (checksumsDiff.isNotEmpty()) { message += "Checksums in Gradle Metadata are wrong:\n - ${checksumsDiff.keys.joinToString("\n - ")}\n\n"