Skip to content

Commit 87451a0

Browse files
License validation should take Sonar license file into account (#114)
1 parent 99742c9 commit 87451a0

File tree

2 files changed

+29
-14
lines changed

2 files changed

+29
-14
lines changed

gradle-modules/src/main/kotlin/org.sonarsource.cloud-native.license-file-generator.gradle.kts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import java.nio.file.StandardCopyOption
2020
import org.sonarsource.cloudnative.gradle.AnalyzerLicensingPackagingRenderer
2121
import org.sonarsource.cloudnative.gradle.LicenseGenerationConfig
2222
import org.sonarsource.cloudnative.gradle.areDirectoriesEqual
23+
import org.sonarsource.cloudnative.gradle.areFilesEqual
2324
import org.sonarsource.cloudnative.gradle.copyDirectory
2425

2526
plugins {
@@ -67,7 +68,11 @@ tasks.register("validateLicenseFiles") {
6768
dependsOn("generateLicenseReport")
6869

6970
doLast {
70-
if (!areDirectoriesEqual(buildLicenseOutputToCopyDir.asFile, resourceThirdPartyDir.asFile, logger)) {
71+
val thirdPartyLicenseEquality = !areDirectoriesEqual(buildLicenseOutputToCopyDir.asFile, resourceThirdPartyDir.asFile, logger)
72+
val sonarLicenseFile = licenseGenerationConfig.projectLicenseFile.get()
73+
val sonarLicenseFileEquality =
74+
areFilesEqual(sonarLicenseFile, resourceLicenseDir.file("LICENSE.txt").asFile, File("LICENSE.txt"), logger)
75+
if (!thirdPartyLicenseEquality || !sonarLicenseFileEquality) {
7176
val message = """
7277
[FAILURE] License file validation failed!
7378
Generated license files differ from committed files at $resourceThirdPartyDir.

gradle-modules/src/main/kotlin/org/sonarsource/cloudnative/gradle/LicenseGenerationUtils.kt

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -65,19 +65,7 @@ fun areDirectoriesEqual(
6565
val file1 = files1[relativePath]!!
6666
val file2 = files2[relativePath]!!
6767

68-
// Quick check: compare file sizes first
69-
if (file1.length() != file2.length()) {
70-
logger.warn("File size mismatch: $relativePath")
71-
return false
72-
}
73-
74-
// Full check: compare byte content
75-
val checksum1 = getFileChecksum(file1)
76-
val checksum2 = getFileChecksum(file2)
77-
if (checksum1 != checksum2) {
78-
logger.warn("File content mismatch: $relativePath")
79-
return false
80-
}
68+
return areFilesEqual(file1, file2, relativePath, logger)
8169
}
8270

8371
// If all checks pass, the directories are equal
@@ -88,6 +76,28 @@ fun areDirectoriesEqual(
8876
}
8977
}
9078

79+
fun areFilesEqual(
80+
file1: File,
81+
file2: File,
82+
relativePath: File,
83+
logger: Logger,
84+
): Boolean {
85+
// Quick check: compare file sizes first
86+
if (file1.length() != file2.length()) {
87+
logger.warn("File size mismatch: $relativePath")
88+
return false
89+
}
90+
91+
// Full check: compare byte content
92+
val checksum1 = getFileChecksum(file1)
93+
val checksum2 = getFileChecksum(file2)
94+
if (checksum1 != checksum2) {
95+
logger.warn("File content mismatch: $relativePath")
96+
return false
97+
}
98+
return true
99+
}
100+
91101
fun getFileChecksum(file: File): String {
92102
val md = MessageDigest.getInstance("SHA-256")
93103
val digestBytes = md.digest(file.readBytes())

0 commit comments

Comments
 (0)