JPS: Print components of CacheVersion, add tests
This commit is contained in:
@@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||||
|
* that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.jps.incremental
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmBytecodeBinaryVersion
|
||||||
|
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmMetadataVersion
|
||||||
|
import org.junit.Assert.assertEquals
|
||||||
|
import org.junit.Test
|
||||||
|
|
||||||
|
class CacheVersionTest {
|
||||||
|
@Test
|
||||||
|
fun testConstruct() {
|
||||||
|
assertEquals(
|
||||||
|
3011001,
|
||||||
|
CacheVersion(
|
||||||
|
3,
|
||||||
|
JvmBytecodeBinaryVersion(1, 0, 3),
|
||||||
|
JvmMetadataVersion(1, 1, 13)
|
||||||
|
).intValue
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testDeconstruct() {
|
||||||
|
assertEquals(
|
||||||
|
"CacheVersion(caches: 3, bytecode: 1.0, metadata: 1.1)",
|
||||||
|
CacheVersion(3011001).toString()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testConstructDeconstruct() {
|
||||||
|
val version = CacheVersion(
|
||||||
|
1,
|
||||||
|
JvmBytecodeBinaryVersion(2, 3),
|
||||||
|
JvmMetadataVersion(4, 5)
|
||||||
|
)
|
||||||
|
|
||||||
|
assertEquals(1024305, version.intValue)
|
||||||
|
assertEquals("CacheVersion(caches: 1, bytecode: 2.3, metadata: 4.5)", version.toString())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testMaxValues() {
|
||||||
|
assertEquals(
|
||||||
|
"CacheVersion(caches: 2146, bytecode: 9.9, metadata: 9.99)",
|
||||||
|
CacheVersion(
|
||||||
|
2146,
|
||||||
|
JvmBytecodeBinaryVersion(9, 9),
|
||||||
|
JvmMetadataVersion(9, 99)
|
||||||
|
).toString()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -23,16 +23,7 @@ class CacheVersionManager(
|
|||||||
) : CacheAttributesManager<CacheVersion> {
|
) : CacheAttributesManager<CacheVersion> {
|
||||||
override val expected: CacheVersion? =
|
override val expected: CacheVersion? =
|
||||||
if (expectedOwnVersion == null) null
|
if (expectedOwnVersion == null) null
|
||||||
else {
|
else CacheVersion(expectedOwnVersion, JvmBytecodeBinaryVersion.INSTANCE, JvmMetadataVersion.INSTANCE)
|
||||||
val metadata = JvmMetadataVersion.INSTANCE
|
|
||||||
val bytecode = JvmBytecodeBinaryVersion.INSTANCE
|
|
||||||
|
|
||||||
CacheVersion(
|
|
||||||
expectedOwnVersion * 1000000 +
|
|
||||||
bytecode.major * 10000 + bytecode.minor * 100 +
|
|
||||||
metadata.major * 1000 + metadata.minor
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun loadActual(): CacheVersion? =
|
override fun loadActual(): CacheVersion? =
|
||||||
if (!versionFile.exists()) null
|
if (!versionFile.exists()) null
|
||||||
@@ -48,7 +39,7 @@ class CacheVersionManager(
|
|||||||
if (values == null) versionFile.delete()
|
if (values == null) versionFile.delete()
|
||||||
else {
|
else {
|
||||||
versionFile.parentFile.mkdirs()
|
versionFile.parentFile.mkdirs()
|
||||||
versionFile.writeText(values.version.toString())
|
versionFile.writeText(values.intValue.toString())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,4 +48,35 @@ class CacheVersionManager(
|
|||||||
get() = versionFile
|
get() = versionFile
|
||||||
}
|
}
|
||||||
|
|
||||||
data class CacheVersion(val version: Int)
|
fun CacheVersion(own: Int, bytecode: JvmBytecodeBinaryVersion, metadata: JvmMetadataVersion): CacheVersion {
|
||||||
|
require(own in 0..(Int.MAX_VALUE / 1000000 - 1))
|
||||||
|
require(bytecode.major in 0..9)
|
||||||
|
require(bytecode.minor in 0..9)
|
||||||
|
require(metadata.major in 0..9)
|
||||||
|
require(metadata.minor in 0..99)
|
||||||
|
|
||||||
|
return CacheVersion(
|
||||||
|
own * 1000000 +
|
||||||
|
bytecode.major * 10000 + bytecode.minor * 100 +
|
||||||
|
metadata.major * 1000 + metadata.minor
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
data class CacheVersion(val intValue: Int) {
|
||||||
|
val own: Int
|
||||||
|
get() = intValue / 1000000
|
||||||
|
|
||||||
|
val bytecode: JvmBytecodeBinaryVersion
|
||||||
|
get() = JvmBytecodeBinaryVersion(
|
||||||
|
intValue / 10000 % 10,
|
||||||
|
intValue / 100 % 10
|
||||||
|
)
|
||||||
|
|
||||||
|
val metadata: JvmMetadataVersion
|
||||||
|
get() = JvmMetadataVersion(
|
||||||
|
intValue / 1000 % 10,
|
||||||
|
intValue / 1 % 100
|
||||||
|
)
|
||||||
|
|
||||||
|
override fun toString(): String = "CacheVersion(caches: $own, bytecode: $bytecode, metadata: $metadata)"
|
||||||
|
}
|
||||||
+2
-5
@@ -6,9 +6,6 @@
|
|||||||
package org.jetbrains.kotlin.jps.incremental
|
package org.jetbrains.kotlin.jps.incremental
|
||||||
|
|
||||||
import org.jetbrains.annotations.TestOnly
|
import org.jetbrains.annotations.TestOnly
|
||||||
import org.jetbrains.kotlin.jps.incremental.CacheAttributesManager
|
|
||||||
import org.jetbrains.kotlin.jps.incremental.CacheVersion
|
|
||||||
import org.jetbrains.kotlin.jps.incremental.lookupsCacheVersionManager
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
|
||||||
@@ -31,7 +28,7 @@ class CompositeLookupsCacheAttributesManager(
|
|||||||
|
|
||||||
override val expected: CompositeLookupsCacheAttributes? =
|
override val expected: CompositeLookupsCacheAttributes? =
|
||||||
if (expectedComponents.isEmpty()) null
|
if (expectedComponents.isEmpty()) null
|
||||||
else CompositeLookupsCacheAttributes(versionManager.expected!!.version, expectedComponents)
|
else CompositeLookupsCacheAttributes(versionManager.expected!!.intValue, expectedComponents)
|
||||||
|
|
||||||
override fun loadActual(): CompositeLookupsCacheAttributes? {
|
override fun loadActual(): CompositeLookupsCacheAttributes? {
|
||||||
val version = versionManager.loadActual() ?: return null
|
val version = versionManager.loadActual() ?: return null
|
||||||
@@ -44,7 +41,7 @@ class CompositeLookupsCacheAttributesManager(
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
return CompositeLookupsCacheAttributes(version.version, components)
|
return CompositeLookupsCacheAttributes(version.intValue, components)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun writeVersion(values: CompositeLookupsCacheAttributes?) {
|
override fun writeVersion(values: CompositeLookupsCacheAttributes?) {
|
||||||
|
|||||||
Reference in New Issue
Block a user