[kpm] kgp-idea-proto: Implement simple serialization tests
^KT-52568 In Progress
This commit is contained in:
committed by
Space
parent
d78fb1d4d2
commit
2a5457f59d
+31
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.kpm.idea.proto
|
||||
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.serialize.IdeaKpmSerializationContext
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.TestIdeaKpmExtrasSerializationExtension
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.TestIdeaKpmSerializationLogger
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
abstract class AbstractSerializationTest<T : Any> : IdeaKpmSerializationContext {
|
||||
|
||||
final override val logger = TestIdeaKpmSerializationLogger()
|
||||
final override val extrasSerializationExtension = TestIdeaKpmExtrasSerializationExtension
|
||||
|
||||
abstract fun serialize(value: T): ByteArray
|
||||
abstract fun deserialize(data: ByteArray): T
|
||||
open fun normalize(value: T): T = value
|
||||
|
||||
fun testSerialization(value: T) {
|
||||
testSerializeAndDeserializeEquals(value)
|
||||
}
|
||||
|
||||
private fun testSerializeAndDeserializeEquals(value: T) {
|
||||
assertEquals(
|
||||
normalize(value), deserialize(serialize(value))
|
||||
)
|
||||
}
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.kpm.idea.proto
|
||||
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmBinaryCoordinates
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmBinaryCoordinatesImpl
|
||||
import org.junit.Test
|
||||
|
||||
class BinaryCoordinatesTest : AbstractSerializationTest<IdeaKpmBinaryCoordinates>() {
|
||||
|
||||
override fun serialize(value: IdeaKpmBinaryCoordinates): ByteArray = value.toByteArray()
|
||||
override fun deserialize(data: ByteArray): IdeaKpmBinaryCoordinates = IdeaKpmBinaryCoordinates(data)
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 0`() = testSerialization(
|
||||
IdeaKpmBinaryCoordinatesImpl(
|
||||
group = "myGroup",
|
||||
module = "myModule",
|
||||
version = "myVersion",
|
||||
kotlinModuleName = null,
|
||||
kotlinFragmentName = null
|
||||
)
|
||||
)
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 1`() = testSerialization(
|
||||
IdeaKpmBinaryCoordinatesImpl(
|
||||
group = "myGroup",
|
||||
module = "myModule",
|
||||
version = "myVersion",
|
||||
kotlinModuleName = "myModuleName",
|
||||
kotlinFragmentName = null
|
||||
)
|
||||
)
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 2`() = testSerialization(
|
||||
IdeaKpmBinaryCoordinatesImpl(
|
||||
group = "myGroup",
|
||||
module = "myModule",
|
||||
version = "myVersion",
|
||||
kotlinModuleName = null,
|
||||
kotlinFragmentName = "myFragmentName"
|
||||
)
|
||||
)
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.kpm.idea.proto
|
||||
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmCompilationOutput
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmCompilationOutputImpl
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.TestIdeaKpmInstances
|
||||
import kotlin.test.Test
|
||||
|
||||
class CompilationOutputTest : AbstractSerializationTest<IdeaKpmCompilationOutput>() {
|
||||
|
||||
override fun serialize(value: IdeaKpmCompilationOutput): ByteArray = value.toByteArray()
|
||||
override fun deserialize(data: ByteArray): IdeaKpmCompilationOutput = IdeaKpmCompilationOutput(data)
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 0`() {
|
||||
testSerialization(TestIdeaKpmInstances.simpleCompilationOutput)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 1`() = testSerialization(
|
||||
IdeaKpmCompilationOutputImpl(
|
||||
classesDirs = emptySet(),
|
||||
resourcesDir = null
|
||||
)
|
||||
)
|
||||
}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.kpm.idea.proto
|
||||
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.serialize.IdeaKpmSerializationContext
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.TestIdeaKpmExtrasSerializationExtension
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.TestIdeaKpmInstances
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.TestIdeaKpmSerializationLogger
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertNull
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
class ContainerTest : IdeaKpmSerializationContext {
|
||||
override val logger = TestIdeaKpmSerializationLogger()
|
||||
override val extrasSerializationExtension = TestIdeaKpmExtrasSerializationExtension
|
||||
|
||||
@Test
|
||||
fun `deserialize - with too high major version - returns null`() {
|
||||
val data = ideaKpmContainerProto {
|
||||
schemaVersionMajor = IdeaKpmProtoSchema.versionMajor + 1
|
||||
schemaVersionMinor = IdeaKpmProtoSchema.versionMinor
|
||||
schemaVersionPatch = IdeaKpmProtoSchema.versionPatch
|
||||
}.toByteArray()
|
||||
|
||||
assertTrue(logger.reports.isEmpty(), "Expected no reports in logger")
|
||||
assertNull(IdeaKpmProject(data))
|
||||
assertTrue(logger.reports.isNotEmpty(), "Expected at least one report in logger")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `deserialize - with lower major version - returns object`() {
|
||||
val data = ideaKpmContainerProto {
|
||||
schemaVersionMajor = IdeaKpmProtoSchema.versionMajor - 1
|
||||
schemaVersionMinor = IdeaKpmProtoSchema.versionMinor
|
||||
schemaVersionPatch = IdeaKpmProtoSchema.versionPatch
|
||||
project = IdeaKpmProjectProto(TestIdeaKpmInstances.simpleProject)
|
||||
}.toByteArray()
|
||||
|
||||
assertEquals(TestIdeaKpmInstances.simpleProject, IdeaKpmProject(data))
|
||||
}
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.kpm.idea.proto
|
||||
|
||||
import org.jetbrains.kotlin.tooling.core.*
|
||||
import kotlin.test.Test
|
||||
|
||||
class ExtrasTest : AbstractSerializationTest<Extras>() {
|
||||
|
||||
override fun serialize(value: Extras): ByteArray = IdeaKpmExtrasProto(value).toByteArray()
|
||||
override fun deserialize(data: ByteArray): Extras = Extras(IdeaKpmExtrasProto.parseFrom(data))
|
||||
override fun normalize(value: Extras): Extras = value.filter { (_, value) -> value !is Ignored }.toExtras()
|
||||
|
||||
class Ignored
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 0`() {
|
||||
|
||||
val extras = mutableExtrasOf(
|
||||
extrasKeyOf<String>() withValue "myValue",
|
||||
extrasKeyOf<String>("a") withValue "myValueA",
|
||||
extrasKeyOf<Int>() withValue 2411,
|
||||
extrasKeyOf<Ignored>() withValue Ignored()
|
||||
)
|
||||
|
||||
testSerialization(extras)
|
||||
}
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.kpm.idea.proto
|
||||
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmFragmentCoordinates
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmFragmentCoordinatesImpl
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmModuleCoordinatesImpl
|
||||
import org.junit.Test
|
||||
|
||||
class FragmentCoordinatesTest : AbstractSerializationTest<IdeaKpmFragmentCoordinates>() {
|
||||
|
||||
override fun serialize(value: IdeaKpmFragmentCoordinates) = value.toByteArray()
|
||||
|
||||
override fun deserialize(data: ByteArray) = IdeaKpmFragmentCoordinates(data)
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 0`() = testSerialization(
|
||||
IdeaKpmFragmentCoordinatesImpl(
|
||||
module = IdeaKpmModuleCoordinatesImpl(
|
||||
buildId = "buildId",
|
||||
projectPath = "projectPath",
|
||||
projectName = "projectName",
|
||||
moduleName = "moduleName",
|
||||
moduleClassifier = null
|
||||
),
|
||||
fragmentName = "myFragmentName"
|
||||
)
|
||||
)
|
||||
}
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.kpm.idea.proto
|
||||
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmFragmentCoordinatesImpl
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmFragmentDependency
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmFragmentDependencyImpl
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmModuleCoordinatesImpl
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.serialize.IdeaKpmSerializationContext
|
||||
import org.jetbrains.kotlin.tooling.core.extrasKeyOf
|
||||
import org.jetbrains.kotlin.tooling.core.extrasOf
|
||||
import org.jetbrains.kotlin.tooling.core.withValue
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class FragmentDependencyTest : AbstractSerializationTest<IdeaKpmFragmentDependency>() {
|
||||
|
||||
override fun serialize(value: IdeaKpmFragmentDependency) = value.toByteArray(this)
|
||||
|
||||
override fun deserialize(data: ByteArray) = IdeaKpmFragmentDependency(data)
|
||||
|
||||
private val coordinates = IdeaKpmFragmentCoordinatesImpl(
|
||||
module = IdeaKpmModuleCoordinatesImpl(
|
||||
buildId = "buildId",
|
||||
projectPath = "projectPath",
|
||||
projectName = "projectName",
|
||||
moduleName = "moduleName",
|
||||
moduleClassifier = "moduleClassifier"
|
||||
),
|
||||
fragmentName = "fragmentName"
|
||||
)
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 0`() = testSerialization(
|
||||
IdeaKpmFragmentDependencyImpl(
|
||||
type = IdeaKpmFragmentDependency.Type.Regular,
|
||||
coordinates = coordinates
|
||||
)
|
||||
)
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 1`() = testSerialization(
|
||||
IdeaKpmFragmentDependencyImpl(
|
||||
type = IdeaKpmFragmentDependency.Type.Refines,
|
||||
coordinates = coordinates
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 2`() = testSerialization(
|
||||
IdeaKpmFragmentDependencyImpl(
|
||||
type = IdeaKpmFragmentDependency.Type.Friend,
|
||||
coordinates = coordinates
|
||||
)
|
||||
)
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 3`() = testSerialization(
|
||||
IdeaKpmFragmentDependencyImpl(
|
||||
type = IdeaKpmFragmentDependency.Type.Regular,
|
||||
coordinates = coordinates,
|
||||
extras = extrasOf(extrasKeyOf<String>() withValue "myStringExtras")
|
||||
)
|
||||
)
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.kpm.idea.proto
|
||||
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.*
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.TestIdeaKpmInstances
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class FragmentTest : AbstractSerializationTest<IdeaKpmFragment>() {
|
||||
override fun serialize(value: IdeaKpmFragment) = value.toByteArray(this)
|
||||
override fun deserialize(data: ByteArray) = IdeaKpmFragment(data)
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 0`() {
|
||||
testDeserializedEquals(TestIdeaKpmInstances.simpleFragment)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 1`() {
|
||||
testDeserializedEquals(TestIdeaKpmInstances.fragmentWithExtras)
|
||||
}
|
||||
|
||||
private fun testDeserializedEquals(value: IdeaKpmFragmentImpl) {
|
||||
val deserialized = IdeaKpmFragment(value.toByteArray(this))
|
||||
val normalized = value.copy(
|
||||
dependencies = value.dependencies.map {
|
||||
if (it !is IdeaKpmResolvedBinaryDependency) return@map it
|
||||
IdeaKpmResolvedBinaryDependencyImpl(
|
||||
coordinates = it.coordinates,
|
||||
binaryType = it.binaryType,
|
||||
binaryFile = it.binaryFile.absoluteFile,
|
||||
extras = it.extras
|
||||
)
|
||||
},
|
||||
languageSettings = (value.languageSettings as IdeaKpmLanguageSettingsImpl).copy(
|
||||
compilerPluginClasspath = value.languageSettings.compilerPluginClasspath.map { it.absoluteFile }
|
||||
),
|
||||
sourceDirectories = value.sourceDirectories
|
||||
.map { it as IdeaKpmSourceDirectoryImpl }
|
||||
.map { it.copy(file = it.file.absoluteFile) }
|
||||
)
|
||||
|
||||
assertEquals(normalized, deserialized)
|
||||
}
|
||||
}
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.kpm.idea.proto
|
||||
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmLanguageSettings
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmLanguageSettingsImpl
|
||||
import java.io.File
|
||||
import kotlin.test.Test
|
||||
|
||||
class LanguageSettingsTest : AbstractSerializationTest<IdeaKpmLanguageSettings>() {
|
||||
|
||||
override fun serialize(value: IdeaKpmLanguageSettings): ByteArray {
|
||||
return value.toByteArray()
|
||||
}
|
||||
|
||||
override fun deserialize(data: ByteArray): IdeaKpmLanguageSettings {
|
||||
return IdeaKpmLanguageSettings(data)
|
||||
}
|
||||
|
||||
override fun normalize(value: IdeaKpmLanguageSettings): IdeaKpmLanguageSettings {
|
||||
value as IdeaKpmLanguageSettingsImpl
|
||||
return value.copy(
|
||||
compilerPluginClasspath = value.compilerPluginClasspath.map { it.absoluteFile }
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 0`() = testSerialization(
|
||||
IdeaKpmLanguageSettingsImpl(
|
||||
languageVersion = "1.3",
|
||||
apiVersion = "1.4",
|
||||
isProgressiveMode = false,
|
||||
enabledLanguageFeatures = setOf("some.feature.1"),
|
||||
optInAnnotationsInUse = setOf("some.opt.in", "some.other.opt.in"),
|
||||
compilerPluginArguments = listOf("my.argument"),
|
||||
compilerPluginClasspath = listOf(File("classpath")),
|
||||
freeCompilerArgs = listOf("free.compiler.arg.1", "free.compiler.arg.2")
|
||||
)
|
||||
)
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 1`() = testSerialization(
|
||||
IdeaKpmLanguageSettingsImpl(
|
||||
languageVersion = null,
|
||||
apiVersion = "1.7",
|
||||
isProgressiveMode = true,
|
||||
enabledLanguageFeatures = emptySet(),
|
||||
optInAnnotationsInUse = emptySet(),
|
||||
compilerPluginArguments = emptyList(),
|
||||
compilerPluginClasspath = emptyList(),
|
||||
freeCompilerArgs = emptyList()
|
||||
)
|
||||
)
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.kpm.idea.proto
|
||||
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmModuleCoordinates
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmModuleCoordinatesImpl
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.TestIdeaKpmInstances
|
||||
import kotlin.test.Test
|
||||
|
||||
class ModuleCoordinatesTest : AbstractSerializationTest<IdeaKpmModuleCoordinates>() {
|
||||
|
||||
override fun serialize(value: IdeaKpmModuleCoordinates) = value.toByteArray()
|
||||
override fun deserialize(data: ByteArray) = IdeaKpmModuleCoordinates(data)
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 0`() = testSerialization(TestIdeaKpmInstances.simpleModuleCoordinates)
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 1`() = testSerialization(
|
||||
IdeaKpmModuleCoordinatesImpl(
|
||||
buildId = "myBuildId",
|
||||
projectPath = "myProjectPath",
|
||||
projectName = "myProjectName",
|
||||
moduleName = "myModuleName",
|
||||
moduleClassifier = null
|
||||
)
|
||||
)
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.kpm.idea.proto
|
||||
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmModule
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.TestIdeaKpmInstances
|
||||
import kotlin.test.Test
|
||||
|
||||
class ModuleTest : AbstractSerializationTest<IdeaKpmModule>() {
|
||||
|
||||
override fun serialize(value: IdeaKpmModule): ByteArray {
|
||||
return value.toByteArray(this)
|
||||
}
|
||||
|
||||
override fun deserialize(data: ByteArray): IdeaKpmModule {
|
||||
return IdeaKpmModule(data)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 0`() = testSerialization(TestIdeaKpmInstances.simpleModule)
|
||||
}
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.kpm.idea.proto
|
||||
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.*
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class PlatformTest : AbstractSerializationTest<IdeaKpmPlatform>() {
|
||||
|
||||
override fun serialize(value: IdeaKpmPlatform): ByteArray {
|
||||
return IdeaKpmPlatformProto(value).toByteArray()
|
||||
}
|
||||
|
||||
override fun deserialize(data: ByteArray): IdeaKpmPlatform {
|
||||
return IdeaKpmPlatform(IdeaKpmPlatformProto.parseFrom(data))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - jvm`() {
|
||||
val value = IdeaKpmJvmPlatformImpl("jvmTarget")
|
||||
assertEquals(value, IdeaKpmJvmPlatform(value.toByteArray(this)))
|
||||
assertEquals(value, IdeaKpmPlatform(IdeaKpmPlatformProto(value)))
|
||||
testSerialization(value)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - native`() {
|
||||
val value = IdeaKpmNativePlatformImpl("konanTarget")
|
||||
assertEquals(value, IdeaKpmNativePlatform(value.toByteArray(this)))
|
||||
assertEquals(value, IdeaKpmPlatform(IdeaKpmPlatformProto(value)))
|
||||
testSerialization(value)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - js`() {
|
||||
val value = IdeaKpmJsPlatformImpl(true)
|
||||
assertEquals(value, IdeaKpmJsPlatform(value.toByteArray(this)))
|
||||
assertEquals(value, IdeaKpmPlatform(IdeaKpmPlatformProto(value)))
|
||||
testSerialization(value)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - wasm`() {
|
||||
val value = IdeaKpmWasmPlatformImpl()
|
||||
assertEquals(value, IdeaKpmWasmPlatform(value.toByteArray(this)))
|
||||
assertEquals(value, IdeaKpmPlatform(IdeaKpmPlatformProto(value)))
|
||||
testSerialization(value)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - unknown`() {
|
||||
val value = IdeaKpmUnknownPlatformImpl()
|
||||
assertEquals(value, IdeaKpmUnknownPlatform(value.toByteArray(this)))
|
||||
assertEquals(value, IdeaKpmPlatform(IdeaKpmPlatformProto(value)))
|
||||
testSerialization(value)
|
||||
}
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.kpm.idea.proto
|
||||
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmProject
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.TestIdeaKpmInstances
|
||||
import kotlin.test.Test
|
||||
|
||||
class ProjectTest : AbstractSerializationTest<IdeaKpmProject>() {
|
||||
|
||||
override fun serialize(value: IdeaKpmProject): ByteArray {
|
||||
return value.toByteArray(this)
|
||||
}
|
||||
|
||||
override fun deserialize(data: ByteArray): IdeaKpmProject {
|
||||
return IdeaKpmProject(data) ?: error("Failed to deserialize kpm project: ${logger.reports}")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 0`() = testSerialization(TestIdeaKpmInstances.simpleProject)
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.kpm.idea.proto
|
||||
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmBinaryCoordinatesImpl
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmResolvedBinaryDependency
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmResolvedBinaryDependencyImpl
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.serialize.IdeaKpmSerializationContext
|
||||
import org.jetbrains.kotlin.tooling.core.emptyExtras
|
||||
import org.jetbrains.kotlin.tooling.core.extrasKeyOf
|
||||
import org.jetbrains.kotlin.tooling.core.extrasOf
|
||||
import org.jetbrains.kotlin.tooling.core.withValue
|
||||
import java.io.File
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class ResolvedBinaryDependencyTest : AbstractSerializationTest<IdeaKpmResolvedBinaryDependency>() {
|
||||
|
||||
override fun serialize(value: IdeaKpmResolvedBinaryDependency) = value.toByteArray(this)
|
||||
override fun deserialize(data: ByteArray) = IdeaKpmResolvedBinaryDependency(data)
|
||||
override fun normalize(value: IdeaKpmResolvedBinaryDependency) =
|
||||
value.run { this as IdeaKpmResolvedBinaryDependencyImpl }.copy(binaryFile = value.binaryFile.absoluteFile)
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 0`() = testSerialization(
|
||||
IdeaKpmResolvedBinaryDependencyImpl(
|
||||
null, binaryType = "binaryType", binaryFile = File("bin"), emptyExtras()
|
||||
)
|
||||
)
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 1`() = testSerialization(
|
||||
IdeaKpmResolvedBinaryDependencyImpl(
|
||||
coordinates = IdeaKpmBinaryCoordinatesImpl(
|
||||
group = "group",
|
||||
module = "module",
|
||||
version = "version",
|
||||
kotlinModuleName = null,
|
||||
kotlinFragmentName = null
|
||||
),
|
||||
binaryType = "binaryType",
|
||||
binaryFile = File("bin"),
|
||||
extras = extrasOf(extrasKeyOf<Int>() withValue 2411)
|
||||
)
|
||||
)
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.kpm.idea.proto
|
||||
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmSourceDirectory
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmSourceDirectoryImpl
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.serialize.IdeaKpmSerializationContext
|
||||
import org.jetbrains.kotlin.tooling.core.emptyExtras
|
||||
import org.jetbrains.kotlin.tooling.core.extrasKeyOf
|
||||
import org.jetbrains.kotlin.tooling.core.extrasOf
|
||||
import org.jetbrains.kotlin.tooling.core.withValue
|
||||
import org.junit.Test
|
||||
import java.io.File
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class SourceDirectoryTest : AbstractSerializationTest<IdeaKpmSourceDirectory>() {
|
||||
|
||||
override fun serialize(value: IdeaKpmSourceDirectory) = value.toByteArray(this)
|
||||
override fun deserialize(data: ByteArray) = IdeaKpmSourceDirectory(data)
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 0`() = testSerialization(
|
||||
IdeaKpmSourceDirectoryImpl(
|
||||
File("myFile").absoluteFile, type = "myType", extras = emptyExtras()
|
||||
)
|
||||
)
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 1`() = testSerialization(
|
||||
IdeaKpmSourceDirectoryImpl(
|
||||
File("myFile").absoluteFile, type = "myType", extras = extrasOf(extrasKeyOf<Int>() withValue 1)
|
||||
)
|
||||
)
|
||||
}
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.kpm.idea.proto
|
||||
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmBinaryCoordinatesImpl
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmUnresolvedBinaryDependency
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmUnresolvedBinaryDependencyImpl
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.serialize.IdeaKpmSerializationContext
|
||||
import org.jetbrains.kotlin.tooling.core.emptyExtras
|
||||
import org.jetbrains.kotlin.tooling.core.extrasKeyOf
|
||||
import org.jetbrains.kotlin.tooling.core.extrasOf
|
||||
import org.jetbrains.kotlin.tooling.core.withValue
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class UnresolvedBinaryTest : AbstractSerializationTest<IdeaKpmUnresolvedBinaryDependency>() {
|
||||
|
||||
override fun serialize(value: IdeaKpmUnresolvedBinaryDependency) = value.toByteArray(this)
|
||||
override fun deserialize(data: ByteArray) = IdeaKpmUnresolvedBinaryDependency(data)
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 0`() = testSerialization(
|
||||
IdeaKpmUnresolvedBinaryDependencyImpl(
|
||||
null, null, emptyExtras()
|
||||
)
|
||||
)
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 1`() = testSerialization(
|
||||
IdeaKpmUnresolvedBinaryDependencyImpl(
|
||||
"1", IdeaKpmBinaryCoordinatesImpl(
|
||||
group = "group",
|
||||
module = "module",
|
||||
version = "version",
|
||||
kotlinModuleName = null,
|
||||
kotlinFragmentName = null
|
||||
), emptyExtras()
|
||||
)
|
||||
)
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 2`() = testSerialization(
|
||||
IdeaKpmUnresolvedBinaryDependencyImpl(
|
||||
null, null, extrasOf(extrasKeyOf<String>() withValue "myExtraValue")
|
||||
)
|
||||
)
|
||||
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* 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.kpm.idea.proto
|
||||
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmVariant
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.TestIdeaKpmInstances
|
||||
import kotlin.test.Test
|
||||
|
||||
class VariantTest : AbstractSerializationTest<IdeaKpmVariant>() {
|
||||
|
||||
override fun serialize(value: IdeaKpmVariant) = value.toByteArray(this)
|
||||
override fun deserialize(data: ByteArray) = IdeaKpmVariant(data)
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 0`() {
|
||||
testSerialization(TestIdeaKpmInstances.simpleVariant)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `serialize - deserialize - sample 1`() {
|
||||
testSerialization(TestIdeaKpmInstances.variantWithExtras)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user