[kpm] Minimize kgp-proto's API surface and add binary compatibility tests

^KT-52568 Verification Pending
This commit is contained in:
sebastian.sellmair
2022-06-13 14:54:16 +02:00
committed by Space
parent 82ab65e689
commit a12c938100
6 changed files with 22 additions and 3 deletions
@@ -15,6 +15,7 @@ dependencies {
testArtifacts project(':kotlin-stdlib-jdk8')
testArtifacts project(':kotlin-reflect')
testArtifacts project(':kotlin-gradle-plugin-idea')
testArtifacts project(':kotlin-gradle-plugin-idea-proto')
testArtifacts project(':kotlin-tooling-core')
testCompileOnly("org.ow2.asm:asm-tree:9.0") {
@@ -0,0 +1,10 @@
public final class org/jetbrains/kotlin/kpm/idea/proto/KpmIdeaProto {
public static final fun IdeaKpmProject (Lorg/jetbrains/kotlin/gradle/kpm/idea/serialize/IdeaKpmSerializationContext;Lcom/google/protobuf/ByteString;)Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmProject;
public static final fun IdeaKpmProject (Lorg/jetbrains/kotlin/gradle/kpm/idea/serialize/IdeaKpmSerializationContext;Ljava/io/InputStream;)Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmProject;
public static final fun IdeaKpmProject (Lorg/jetbrains/kotlin/gradle/kpm/idea/serialize/IdeaKpmSerializationContext;Ljava/nio/ByteBuffer;)Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmProject;
public static final fun IdeaKpmProject (Lorg/jetbrains/kotlin/gradle/kpm/idea/serialize/IdeaKpmSerializationContext;[B)Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmProject;
public static final fun toByteArray (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmProject;Lorg/jetbrains/kotlin/gradle/kpm/idea/serialize/IdeaKpmSerializationContext;)[B
public static final fun toByteString (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmProject;Lorg/jetbrains/kotlin/gradle/kpm/idea/serialize/IdeaKpmSerializationContext;)Lcom/google/protobuf/ByteString;
public static final fun writeTo (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmProject;Ljava/io/OutputStream;Lorg/jetbrains/kotlin/gradle/kpm/idea/serialize/IdeaKpmSerializationContext;)V
}
@@ -40,6 +40,13 @@ class RuntimePublicAPITest {
)
}
@Test fun kotlinGradlePluginIdeaProto() {
snapshotAPIAndCompare(
"../kotlin-gradle-plugin-idea-proto/build/libs", "kotlin-gradle-plugin-idea-proto(?!-[-a-z]+)",
nonPublicAnnotations = listOf("org/jetbrains/kotlin/gradle/kpm/idea/InternalKotlinGradlePluginApi")
)
}
@Test fun kotlinToolingCore() {
snapshotAPIAndCompare("../kotlin-tooling-core/build/libs", "kotlin-tooling-core(?!-[-a-z]+)")
}
@@ -5,7 +5,7 @@
package org.jetbrains.kotlin.kpm.idea.proto
object IdeaKpmProtoSchema {
internal object IdeaKpmProtoSchema {
const val versionMajor = 1
const val versionMinor = 0
const val versionPatch = 0
@@ -4,6 +4,7 @@
*/
@file:Suppress("FunctionName")
@file:JvmName("KpmIdeaProto")
package org.jetbrains.kotlin.kpm.idea.proto
@@ -50,7 +51,7 @@ fun IdeaKpmProject.toByteString(context: IdeaKpmSerializationContext): ByteStrin
return context.IdeaKpmContainerProto(this).toByteString()
}
fun IdeaKpmProject.writeTo(context: IdeaKpmSerializationContext, output: OutputStream) {
fun IdeaKpmProject.writeTo(output: OutputStream, context: IdeaKpmSerializationContext) {
context.IdeaKpmContainerProto(this).writeDelimitedTo(output)
}
@@ -55,7 +55,7 @@ internal open class IdeaKpmBuildProjectModelTask : DefaultTask() {
val protoBinaryFile = outputDirectory.resolve("model.proto.bin")
if (protoBinaryFile.exists()) protoBinaryFile.delete()
protoBinaryFile.outputStream().use { stream ->
model.writeTo(serializationContext, stream)
model.writeTo(stream, serializationContext)
}
}