[JS IR] Fix klib fingerprint format
^KT-56961 Fixed
This commit is contained in:
committed by
Space Team
parent
e82efa6a7c
commit
4cda89db9e
+8
@@ -57,6 +57,10 @@ value class SerializedIrFileFingerprint private constructor(val fileFingerprint:
|
||||
constructor(file: SerializedIrFile) : this(calculateFileFingerprint(file))
|
||||
|
||||
constructor(lib: KotlinLibrary, fileIndex: Int) : this(calculateFileFingerprint(lib, fileIndex))
|
||||
|
||||
override fun toString(): String {
|
||||
return fileFingerprint.toString()
|
||||
}
|
||||
}
|
||||
|
||||
@JvmInline
|
||||
@@ -96,6 +100,10 @@ value class SerializedKlibFingerprint(val klibFingerprint: FingerprintHash) {
|
||||
constructor(fileFingerprints: List<SerializedIrFileFingerprint>) : this(fileFingerprints.calculateKlibFingerprint())
|
||||
|
||||
constructor(klibFile: File) : this(FingerprintHash(klibFile.calculateKlibHash()))
|
||||
|
||||
override fun toString(): String {
|
||||
return klibFingerprint.toString()
|
||||
}
|
||||
}
|
||||
|
||||
private const val FILE_FINGERPRINTS_SEPARATOR = " "
|
||||
|
||||
+30
@@ -412,6 +412,36 @@ class Kotlin2JsIrGradlePluginIT : AbstractKotlin2JsGradlePluginIT(true) {
|
||||
build("compileDevelopmentExecutableKotlinJs")
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("klib fingerprints")
|
||||
@GradleTest
|
||||
fun testKlibFingerprints(gradleVersion: GradleVersion) {
|
||||
project("kotlin2JsIrICProject", gradleVersion) {
|
||||
val fingerprints = Array(2) {
|
||||
build("compileDevelopmentExecutableKotlinJs")
|
||||
|
||||
val manifestLines = projectPath.resolve("build/classes/kotlin/main/default/manifest").readLines()
|
||||
val serializedKlibFingerprint = manifestLines.singleOrNull { it.startsWith("serializedKlibFingerprint=") }
|
||||
assertNotNull(serializedKlibFingerprint) { "can not find serializedKlibFingerprint" }
|
||||
assertTrue("bad serializedKlibFingerprint format '$serializedKlibFingerprint'") {
|
||||
Regex("serializedKlibFingerprint=[a-z0-9]+\\.[a-z0-9]+").matches(serializedKlibFingerprint)
|
||||
}
|
||||
|
||||
val serializedIrFileFingerprints = manifestLines.singleOrNull { it.startsWith("serializedIrFileFingerprints=") }
|
||||
assertNotNull(serializedIrFileFingerprints) { "can not find serializedIrFileFingerprints" }
|
||||
assertTrue("bad serializedIrFileFingerprints format '$serializedIrFileFingerprints'") {
|
||||
// kotlin2JsIrICProject has 2 files
|
||||
Regex("serializedIrFileFingerprints=[a-z0-9]+\\.[a-z0-9]+ [a-z0-9]+\\.[a-z0-9]+").matches(serializedIrFileFingerprints)
|
||||
}
|
||||
|
||||
build("clean")
|
||||
|
||||
serializedKlibFingerprint to serializedIrFileFingerprints
|
||||
}
|
||||
|
||||
assertEquals(fingerprints[0], fingerprints[1], "fingerprints must be stable")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@JsGradlePluginTests
|
||||
|
||||
Reference in New Issue
Block a user