[kpm] Minimize kgp-proto's API surface and add binary compatibility tests
^KT-52568 Verification Pending
This commit is contained in:
committed by
Space
parent
82ab65e689
commit
a12c938100
@@ -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") {
|
||||
|
||||
+10
@@ -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
|
||||
}
|
||||
|
||||
+7
@@ -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]+)")
|
||||
}
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+2
-1
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user