[kpm] kgp-idea: Refactor testFixtures

- Consistently prefix entities with 'TestIdeaKpm'

^KT-52568 In Progress
This commit is contained in:
sebastian.sellmair
2022-06-13 14:30:00 +02:00
committed by Space
parent 01a4045c04
commit d73d36ef2c
6 changed files with 34 additions and 21 deletions
@@ -10,22 +10,22 @@ import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmBinaryDependency
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmResolvedBinaryDependency
import java.io.File
fun buildIdeaKpmBinaryDependencyMatchers(notation: Any?): List<IdeaKpmBinaryDependencyMatcher> {
fun buildIdeaKpmBinaryDependencyMatchers(notation: Any?): List<TestIdeaKpmBinaryDependencyMatcher> {
return when (notation) {
null -> emptyList()
is IdeaKpmBinaryDependencyMatcher -> listOf(notation)
is String -> listOf(IdeaKpmBinaryDependencyMatcher.Coordinates(parseIdeaKpmBinaryCoordinates(notation)))
is Regex -> listOf(IdeaKpmBinaryDependencyMatcher.CoordinatesRegex(notation))
is File -> listOf(IdeaKpmBinaryDependencyMatcher.BinaryFile(notation))
is TestIdeaKpmBinaryDependencyMatcher -> listOf(notation)
is String -> listOf(TestIdeaKpmBinaryDependencyMatcher.Coordinates(parseIdeaKpmBinaryCoordinates(notation)))
is Regex -> listOf(TestIdeaKpmBinaryDependencyMatcher.CoordinatesRegex(notation))
is File -> listOf(TestIdeaKpmBinaryDependencyMatcher.BinaryFile(notation))
is Iterable<*> -> notation.flatMap { child -> buildIdeaKpmBinaryDependencyMatchers(child) }
else -> error("Can't build ${IdeaKpmBinaryDependencyMatcher::class.simpleName} from $notation")
else -> error("Can't build ${TestIdeaKpmBinaryDependencyMatcher::class.simpleName} from $notation")
}
}
interface IdeaKpmBinaryDependencyMatcher : IdeaKpmDependencyMatcher<IdeaKpmBinaryDependency>{
interface TestIdeaKpmBinaryDependencyMatcher : TestIdeaKpmDependencyMatcher<IdeaKpmBinaryDependency>{
class Coordinates(
private val coordinates: IdeaKpmBinaryCoordinates
) : IdeaKpmBinaryDependencyMatcher {
) : TestIdeaKpmBinaryDependencyMatcher {
override val description: String = coordinates.toString()
override fun matches(dependency: IdeaKpmBinaryDependency): Boolean {
@@ -35,7 +35,7 @@ interface IdeaKpmBinaryDependencyMatcher : IdeaKpmDependencyMatcher<IdeaKpmBinar
class CoordinatesRegex(
private val regex: Regex
) : IdeaKpmBinaryDependencyMatcher {
) : TestIdeaKpmBinaryDependencyMatcher {
override val description: String = regex.pattern
override fun matches(dependency: IdeaKpmBinaryDependency): Boolean {
@@ -45,7 +45,7 @@ interface IdeaKpmBinaryDependencyMatcher : IdeaKpmDependencyMatcher<IdeaKpmBinar
class BinaryFile(
private val binaryFile: File
) : IdeaKpmBinaryDependencyMatcher {
) : TestIdeaKpmBinaryDependencyMatcher {
override val description: String = binaryFile.path
override fun matches(dependency: IdeaKpmBinaryDependency): Boolean {
@@ -55,7 +55,7 @@ interface IdeaKpmBinaryDependencyMatcher : IdeaKpmDependencyMatcher<IdeaKpmBinar
class InDirectory(
private val parentFile: File
) : IdeaKpmBinaryDependencyMatcher {
) : TestIdeaKpmBinaryDependencyMatcher {
constructor(parentFilePath: String) : this(File(parentFilePath))
override val description: String = "$parentFile/**"
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea.testFixtures
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmDependency
interface IdeaKpmDependencyMatcher<in T : IdeaKpmDependency> {
interface TestIdeaKpmDependencyMatcher<in T : IdeaKpmDependency> {
val description: String
fun matches(dependency: T): Boolean
}
@@ -2,18 +2,18 @@ package org.jetbrains.kotlin.gradle.kpm.idea.testFixtures
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmFragmentDependency
fun buildIdeaKpmFragmentDependencyMatchers(notation: Any?): List<IdeaKpmFragmentDependencyMatcher> {
fun buildIdeaKpmFragmentDependencyMatchers(notation: Any?): List<TestIdeaKpmFragmentDependencyMatcher> {
return when (notation) {
null -> emptyList()
is Iterable<*> -> notation.flatMap { buildIdeaKpmFragmentDependencyMatchers(it) }
is String -> listOf(IdeaKpmFragmentDependencyMatcher.DependencyLiteral(notation))
is Regex -> listOf(IdeaKpmFragmentDependencyMatcher.DependencyRegex(notation))
else -> error("Can't build ${IdeaKpmFragmentDependencyMatcher::class.simpleName} from $notation")
is String -> listOf(TestIdeaKpmFragmentDependencyMatcher.DependencyLiteral(notation))
is Regex -> listOf(TestIdeaKpmFragmentDependencyMatcher.DependencyRegex(notation))
else -> error("Can't build ${TestIdeaKpmFragmentDependencyMatcher::class.simpleName} from $notation")
}
}
interface IdeaKpmFragmentDependencyMatcher : IdeaKpmDependencyMatcher<IdeaKpmFragmentDependency> {
class DependencyLiteral(private val dependencyLiteral: String) : IdeaKpmFragmentDependencyMatcher {
interface TestIdeaKpmFragmentDependencyMatcher : TestIdeaKpmDependencyMatcher<IdeaKpmFragmentDependency> {
class DependencyLiteral(private val dependencyLiteral: String) : TestIdeaKpmFragmentDependencyMatcher {
override val description: String = dependencyLiteral
override fun matches(dependency: IdeaKpmFragmentDependency): Boolean {
@@ -21,7 +21,7 @@ interface IdeaKpmFragmentDependencyMatcher : IdeaKpmDependencyMatcher<IdeaKpmFra
}
}
class DependencyRegex(private val dependencyRegex: Regex) : IdeaKpmFragmentDependencyMatcher {
class DependencyRegex(private val dependencyRegex: Regex) : TestIdeaKpmFragmentDependencyMatcher {
override val description: String = dependencyRegex.pattern
override fun matches(dependency: IdeaKpmFragmentDependency): Boolean {
@@ -26,7 +26,7 @@ fun IdeaKpmModule.assertContainsFragment(name: String): IdeaKpmFragment {
fun IdeaKpmFragment.assertResolvedBinaryDependencies(
binaryType: String,
matchers: Set<IdeaKpmBinaryDependencyMatcher>
matchers: Set<TestIdeaKpmBinaryDependencyMatcher>
): Set<IdeaKpmResolvedBinaryDependency> {
val resolvedBinaryDependencies = dependencies
.mapNotNull { dependency ->
@@ -91,7 +91,7 @@ fun IdeaKpmFragment.assertResolvedBinaryDependencies(
binaryType: String, vararg matchers: Any?
) = assertResolvedBinaryDependencies(binaryType, matchers.toSet())
fun IdeaKpmFragment.assertFragmentDependencies(matchers: Set<IdeaKpmFragmentDependencyMatcher>): Set<IdeaKpmFragmentDependency> {
fun IdeaKpmFragment.assertFragmentDependencies(matchers: Set<TestIdeaKpmFragmentDependencyMatcher>): Set<IdeaKpmFragmentDependency> {
val sourceDependencies = dependencies.filterIsInstance<IdeaKpmFragmentDependency>().toSet()
val unexpectedDependencies = sourceDependencies
@@ -1,3 +1,5 @@
package org.jetbrains.kotlin.gradle.kpm.idea.testFixtures
import org.gradle.tooling.internal.adapter.ProtocolToModelAdapter
/*
@@ -12,3 +14,8 @@ inline fun <reified T> createProxyInstance(obj: Any): T {
fun unwrapProxyInstance(obj: Any): Any {
return ProtocolToModelAdapter().unpack(obj)
}
inline fun <reified T : Any> Any.copy(): T {
val instance = runCatching { unwrapProxyInstance(this) }.getOrElse { this }
return T::class.java.cast(instance.serialize().deserialize())
}
@@ -26,6 +26,12 @@ fun ByteArray.deserialize(classLoader: ClassLoader): Any {
return objectInputStream.use { it.readObject() }
}
fun ByteArray.deserialize(): Any {
val inputStream = ByteArrayInputStream(this)
val objectInputStream = ObjectInputStream(inputStream)
return objectInputStream.use { it.readObject() }
}
class ClassLoaderObjectInputStream(stream: InputStream?, private val classLoader: ClassLoader) : ObjectInputStream(stream) {
@Throws(IOException::class, ClassNotFoundException::class)
override fun resolveClass(desc: ObjectStreamClass): Class<*> {