Binary compatibility validation: dump public API of merged stdlib to another file
This commit is contained in:
+12
-7
@@ -30,11 +30,15 @@ class RuntimePublicAPITest {
|
||||
val testName = TestName()
|
||||
|
||||
@Test fun kotlinRuntime() {
|
||||
snapshotAPIAndCompare("../../tools/runtime/target", "kotlin-runtime", "runtime-declarations.json", listOf("kotlin.jvm.internal"))
|
||||
snapshotAPIAndCompare("../../tools/runtime/target", "kotlin-runtime", listOf("runtime-declarations.json"), listOf("kotlin.jvm.internal"))
|
||||
}
|
||||
|
||||
@Test fun kotlinStdlib() {
|
||||
snapshotAPIAndCompare("../../stdlib/target", "kotlin-stdlib", "stdlib-declarations.json")
|
||||
snapshotAPIAndCompare("../../stdlib/target", "original-kotlin-stdlib", listOf("stdlib-declarations.json"))
|
||||
}
|
||||
|
||||
@Test fun kotlinStdlibRuntimeMerged() {
|
||||
snapshotAPIAndCompare("../../stdlib/target", "kotlin-stdlib", listOf("stdlib-declarations.json", "../../tools/runtime/target/runtime-declarations.json"), listOf("kotlin.jvm.internal"))
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -44,16 +48,17 @@ class RuntimePublicAPITest {
|
||||
}
|
||||
*/
|
||||
|
||||
private fun snapshotAPIAndCompare(basePath: String, jarPrefix: String, kotlinJvmMappingsPath: String, publicPackages: List<String> = emptyList()) {
|
||||
private fun snapshotAPIAndCompare(basePath: String, jarPrefix: String, kotlinJvmMappingsPath: List<String>, publicPackages: List<String> = emptyList()) {
|
||||
val base = File(basePath).absoluteFile.normalize()
|
||||
val jarFile = getJarPath(base, jarPrefix)
|
||||
val kotlinJvmMappingsFile = base.resolve(kotlinJvmMappingsPath)
|
||||
val kotlinJvmMappingsFiles = kotlinJvmMappingsPath.map(base::resolve)
|
||||
|
||||
println("Reading kotlin visibilities from $kotlinJvmMappingsFile")
|
||||
println("Reading kotlin visibilities from $kotlinJvmMappingsFiles")
|
||||
val publicPackagePrefixes = publicPackages.map { it.replace('.', '/') + '/' }
|
||||
val visibilities =
|
||||
readKotlinVisibilities(kotlinJvmMappingsFile)
|
||||
.filterKeys { name -> publicPackagePrefixes.none { name.startsWith(it) } }
|
||||
kotlinJvmMappingsFiles
|
||||
.map { readKotlinVisibilities(it).filterKeys { name -> publicPackagePrefixes.none { name.startsWith(it) } } }
|
||||
.reduce { m1, m2 -> m1 + m2 }
|
||||
|
||||
println("Reading binary API from $jarFile")
|
||||
val api = getBinaryAPI(JarFile(jarFile), visibilities).filterOutNonPublic()
|
||||
|
||||
Reference in New Issue
Block a user