[kpm] kgp-idea: Refactor testFixtures
- Consistently prefix entities with 'TestIdeaKpm' ^KT-52568 In Progress
This commit is contained in:
committed by
Space
parent
01a4045c04
commit
d73d36ef2c
+11
-11
@@ -10,22 +10,22 @@ import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmBinaryDependency
|
|||||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmResolvedBinaryDependency
|
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmResolvedBinaryDependency
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
fun buildIdeaKpmBinaryDependencyMatchers(notation: Any?): List<IdeaKpmBinaryDependencyMatcher> {
|
fun buildIdeaKpmBinaryDependencyMatchers(notation: Any?): List<TestIdeaKpmBinaryDependencyMatcher> {
|
||||||
return when (notation) {
|
return when (notation) {
|
||||||
null -> emptyList()
|
null -> emptyList()
|
||||||
is IdeaKpmBinaryDependencyMatcher -> listOf(notation)
|
is TestIdeaKpmBinaryDependencyMatcher -> listOf(notation)
|
||||||
is String -> listOf(IdeaKpmBinaryDependencyMatcher.Coordinates(parseIdeaKpmBinaryCoordinates(notation)))
|
is String -> listOf(TestIdeaKpmBinaryDependencyMatcher.Coordinates(parseIdeaKpmBinaryCoordinates(notation)))
|
||||||
is Regex -> listOf(IdeaKpmBinaryDependencyMatcher.CoordinatesRegex(notation))
|
is Regex -> listOf(TestIdeaKpmBinaryDependencyMatcher.CoordinatesRegex(notation))
|
||||||
is File -> listOf(IdeaKpmBinaryDependencyMatcher.BinaryFile(notation))
|
is File -> listOf(TestIdeaKpmBinaryDependencyMatcher.BinaryFile(notation))
|
||||||
is Iterable<*> -> notation.flatMap { child -> buildIdeaKpmBinaryDependencyMatchers(child) }
|
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(
|
class Coordinates(
|
||||||
private val coordinates: IdeaKpmBinaryCoordinates
|
private val coordinates: IdeaKpmBinaryCoordinates
|
||||||
) : IdeaKpmBinaryDependencyMatcher {
|
) : TestIdeaKpmBinaryDependencyMatcher {
|
||||||
override val description: String = coordinates.toString()
|
override val description: String = coordinates.toString()
|
||||||
|
|
||||||
override fun matches(dependency: IdeaKpmBinaryDependency): Boolean {
|
override fun matches(dependency: IdeaKpmBinaryDependency): Boolean {
|
||||||
@@ -35,7 +35,7 @@ interface IdeaKpmBinaryDependencyMatcher : IdeaKpmDependencyMatcher<IdeaKpmBinar
|
|||||||
|
|
||||||
class CoordinatesRegex(
|
class CoordinatesRegex(
|
||||||
private val regex: Regex
|
private val regex: Regex
|
||||||
) : IdeaKpmBinaryDependencyMatcher {
|
) : TestIdeaKpmBinaryDependencyMatcher {
|
||||||
override val description: String = regex.pattern
|
override val description: String = regex.pattern
|
||||||
|
|
||||||
override fun matches(dependency: IdeaKpmBinaryDependency): Boolean {
|
override fun matches(dependency: IdeaKpmBinaryDependency): Boolean {
|
||||||
@@ -45,7 +45,7 @@ interface IdeaKpmBinaryDependencyMatcher : IdeaKpmDependencyMatcher<IdeaKpmBinar
|
|||||||
|
|
||||||
class BinaryFile(
|
class BinaryFile(
|
||||||
private val binaryFile: File
|
private val binaryFile: File
|
||||||
) : IdeaKpmBinaryDependencyMatcher {
|
) : TestIdeaKpmBinaryDependencyMatcher {
|
||||||
override val description: String = binaryFile.path
|
override val description: String = binaryFile.path
|
||||||
|
|
||||||
override fun matches(dependency: IdeaKpmBinaryDependency): Boolean {
|
override fun matches(dependency: IdeaKpmBinaryDependency): Boolean {
|
||||||
@@ -55,7 +55,7 @@ interface IdeaKpmBinaryDependencyMatcher : IdeaKpmDependencyMatcher<IdeaKpmBinar
|
|||||||
|
|
||||||
class InDirectory(
|
class InDirectory(
|
||||||
private val parentFile: File
|
private val parentFile: File
|
||||||
) : IdeaKpmBinaryDependencyMatcher {
|
) : TestIdeaKpmBinaryDependencyMatcher {
|
||||||
constructor(parentFilePath: String) : this(File(parentFilePath))
|
constructor(parentFilePath: String) : this(File(parentFilePath))
|
||||||
|
|
||||||
override val description: String = "$parentFile/**"
|
override val description: String = "$parentFile/**"
|
||||||
+1
-1
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea.testFixtures
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmDependency
|
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmDependency
|
||||||
|
|
||||||
interface IdeaKpmDependencyMatcher<in T : IdeaKpmDependency> {
|
interface TestIdeaKpmDependencyMatcher<in T : IdeaKpmDependency> {
|
||||||
val description: String
|
val description: String
|
||||||
fun matches(dependency: T): Boolean
|
fun matches(dependency: T): Boolean
|
||||||
}
|
}
|
||||||
+7
-7
@@ -2,18 +2,18 @@ package org.jetbrains.kotlin.gradle.kpm.idea.testFixtures
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmFragmentDependency
|
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmFragmentDependency
|
||||||
|
|
||||||
fun buildIdeaKpmFragmentDependencyMatchers(notation: Any?): List<IdeaKpmFragmentDependencyMatcher> {
|
fun buildIdeaKpmFragmentDependencyMatchers(notation: Any?): List<TestIdeaKpmFragmentDependencyMatcher> {
|
||||||
return when (notation) {
|
return when (notation) {
|
||||||
null -> emptyList()
|
null -> emptyList()
|
||||||
is Iterable<*> -> notation.flatMap { buildIdeaKpmFragmentDependencyMatchers(it) }
|
is Iterable<*> -> notation.flatMap { buildIdeaKpmFragmentDependencyMatchers(it) }
|
||||||
is String -> listOf(IdeaKpmFragmentDependencyMatcher.DependencyLiteral(notation))
|
is String -> listOf(TestIdeaKpmFragmentDependencyMatcher.DependencyLiteral(notation))
|
||||||
is Regex -> listOf(IdeaKpmFragmentDependencyMatcher.DependencyRegex(notation))
|
is Regex -> listOf(TestIdeaKpmFragmentDependencyMatcher.DependencyRegex(notation))
|
||||||
else -> error("Can't build ${IdeaKpmFragmentDependencyMatcher::class.simpleName} from $notation")
|
else -> error("Can't build ${TestIdeaKpmFragmentDependencyMatcher::class.simpleName} from $notation")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IdeaKpmFragmentDependencyMatcher : IdeaKpmDependencyMatcher<IdeaKpmFragmentDependency> {
|
interface TestIdeaKpmFragmentDependencyMatcher : TestIdeaKpmDependencyMatcher<IdeaKpmFragmentDependency> {
|
||||||
class DependencyLiteral(private val dependencyLiteral: String) : IdeaKpmFragmentDependencyMatcher {
|
class DependencyLiteral(private val dependencyLiteral: String) : TestIdeaKpmFragmentDependencyMatcher {
|
||||||
override val description: String = dependencyLiteral
|
override val description: String = dependencyLiteral
|
||||||
|
|
||||||
override fun matches(dependency: IdeaKpmFragmentDependency): Boolean {
|
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 val description: String = dependencyRegex.pattern
|
||||||
|
|
||||||
override fun matches(dependency: IdeaKpmFragmentDependency): Boolean {
|
override fun matches(dependency: IdeaKpmFragmentDependency): Boolean {
|
||||||
+2
-2
@@ -26,7 +26,7 @@ fun IdeaKpmModule.assertContainsFragment(name: String): IdeaKpmFragment {
|
|||||||
|
|
||||||
fun IdeaKpmFragment.assertResolvedBinaryDependencies(
|
fun IdeaKpmFragment.assertResolvedBinaryDependencies(
|
||||||
binaryType: String,
|
binaryType: String,
|
||||||
matchers: Set<IdeaKpmBinaryDependencyMatcher>
|
matchers: Set<TestIdeaKpmBinaryDependencyMatcher>
|
||||||
): Set<IdeaKpmResolvedBinaryDependency> {
|
): Set<IdeaKpmResolvedBinaryDependency> {
|
||||||
val resolvedBinaryDependencies = dependencies
|
val resolvedBinaryDependencies = dependencies
|
||||||
.mapNotNull { dependency ->
|
.mapNotNull { dependency ->
|
||||||
@@ -91,7 +91,7 @@ fun IdeaKpmFragment.assertResolvedBinaryDependencies(
|
|||||||
binaryType: String, vararg matchers: Any?
|
binaryType: String, vararg matchers: Any?
|
||||||
) = assertResolvedBinaryDependencies(binaryType, matchers.toSet())
|
) = 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 sourceDependencies = dependencies.filterIsInstance<IdeaKpmFragmentDependency>().toSet()
|
||||||
|
|
||||||
val unexpectedDependencies = sourceDependencies
|
val unexpectedDependencies = sourceDependencies
|
||||||
|
|||||||
+7
@@ -1,3 +1,5 @@
|
|||||||
|
package org.jetbrains.kotlin.gradle.kpm.idea.testFixtures
|
||||||
|
|
||||||
import org.gradle.tooling.internal.adapter.ProtocolToModelAdapter
|
import org.gradle.tooling.internal.adapter.ProtocolToModelAdapter
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -12,3 +14,8 @@ inline fun <reified T> createProxyInstance(obj: Any): T {
|
|||||||
fun unwrapProxyInstance(obj: Any): Any {
|
fun unwrapProxyInstance(obj: Any): Any {
|
||||||
return ProtocolToModelAdapter().unpack(obj)
|
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())
|
||||||
|
}
|
||||||
+6
@@ -26,6 +26,12 @@ fun ByteArray.deserialize(classLoader: ClassLoader): Any {
|
|||||||
return objectInputStream.use { it.readObject() }
|
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) {
|
class ClassLoaderObjectInputStream(stream: InputStream?, private val classLoader: ClassLoader) : ObjectInputStream(stream) {
|
||||||
@Throws(IOException::class, ClassNotFoundException::class)
|
@Throws(IOException::class, ClassNotFoundException::class)
|
||||||
override fun resolveClass(desc: ObjectStreamClass): Class<*> {
|
override fun resolveClass(desc: ObjectStreamClass): Class<*> {
|
||||||
|
|||||||
Reference in New Issue
Block a user