Binary compatibility validation: dump public API of merged stdlib to another file
This commit is contained in:
+4017
File diff suppressed because it is too large
Load Diff
+12
-7
@@ -30,11 +30,15 @@ class RuntimePublicAPITest {
|
|||||||
val testName = TestName()
|
val testName = TestName()
|
||||||
|
|
||||||
@Test fun kotlinRuntime() {
|
@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() {
|
@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 base = File(basePath).absoluteFile.normalize()
|
||||||
val jarFile = getJarPath(base, jarPrefix)
|
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 publicPackagePrefixes = publicPackages.map { it.replace('.', '/') + '/' }
|
||||||
val visibilities =
|
val visibilities =
|
||||||
readKotlinVisibilities(kotlinJvmMappingsFile)
|
kotlinJvmMappingsFiles
|
||||||
.filterKeys { name -> publicPackagePrefixes.none { name.startsWith(it) } }
|
.map { readKotlinVisibilities(it).filterKeys { name -> publicPackagePrefixes.none { name.startsWith(it) } } }
|
||||||
|
.reduce { m1, m2 -> m1 + m2 }
|
||||||
|
|
||||||
println("Reading binary API from $jarFile")
|
println("Reading binary API from $jarFile")
|
||||||
val api = getBinaryAPI(JarFile(jarFile), visibilities).filterOutNonPublic()
|
val api = getBinaryAPI(JarFile(jarFile), visibilities).filterOutNonPublic()
|
||||||
|
|||||||
Reference in New Issue
Block a user