[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 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/**"
|
||||
+1
-1
@@ -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
|
||||
}
|
||||
+7
-7
@@ -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 {
|
||||
+2
-2
@@ -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
|
||||
|
||||
+7
@@ -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())
|
||||
}
|
||||
+6
@@ -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<*> {
|
||||
|
||||
Reference in New Issue
Block a user