[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(file: SerializedIrFile) : this(calculateFileFingerprint(file))
|
||||||
|
|
||||||
constructor(lib: KotlinLibrary, fileIndex: Int) : this(calculateFileFingerprint(lib, fileIndex))
|
constructor(lib: KotlinLibrary, fileIndex: Int) : this(calculateFileFingerprint(lib, fileIndex))
|
||||||
|
|
||||||
|
override fun toString(): String {
|
||||||
|
return fileFingerprint.toString()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmInline
|
@JvmInline
|
||||||
@@ -96,6 +100,10 @@ value class SerializedKlibFingerprint(val klibFingerprint: FingerprintHash) {
|
|||||||
constructor(fileFingerprints: List<SerializedIrFileFingerprint>) : this(fileFingerprints.calculateKlibFingerprint())
|
constructor(fileFingerprints: List<SerializedIrFileFingerprint>) : this(fileFingerprints.calculateKlibFingerprint())
|
||||||
|
|
||||||
constructor(klibFile: File) : this(FingerprintHash(klibFile.calculateKlibHash()))
|
constructor(klibFile: File) : this(FingerprintHash(klibFile.calculateKlibHash()))
|
||||||
|
|
||||||
|
override fun toString(): String {
|
||||||
|
return klibFingerprint.toString()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private const val FILE_FINGERPRINTS_SEPARATOR = " "
|
private const val FILE_FINGERPRINTS_SEPARATOR = " "
|
||||||
|
|||||||
+30
@@ -412,6 +412,36 @@ class Kotlin2JsIrGradlePluginIT : AbstractKotlin2JsGradlePluginIT(true) {
|
|||||||
build("compileDevelopmentExecutableKotlinJs")
|
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
|
@JsGradlePluginTests
|
||||||
|
|||||||
Reference in New Issue
Block a user