[Tests] Fix Android test runner

This commit is contained in:
Evgeniy.Zhelenskiy
2021-12-06 23:35:53 +03:00
parent cd1d77e760
commit 38ff3f5a24
2 changed files with 19 additions and 0 deletions
@@ -27,7 +27,9 @@ import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.model.DependencyKind
import org.jetbrains.kotlin.test.model.FrontendKinds
import org.jetbrains.kotlin.test.model.ResultingArtifact
import org.jetbrains.kotlin.test.model.TestFile
import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerTest
import org.jetbrains.kotlin.test.runners.TransformersFunctions.Android
import org.jetbrains.kotlin.test.services.*
import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator
import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator
@@ -412,6 +414,13 @@ class CodegenTestsOnAndroidGenerator private constructor(private val pathManager
useAdditionalService<TemporaryDirectoryManager>(::TemporaryDirectoryManagerImpl)
useSourcePreprocessor(*AbstractKotlinCompilerTest.defaultPreprocessors.toTypedArray())
useDirectives(*AbstractKotlinCompilerTest.defaultDirectiveContainers.toTypedArray())
class AndroidTransformingPreprocessor(testServices: TestServices) : SourceFilePreprocessor(testServices) {
override fun process(file: TestFile, content: String): String {
val transformers = Android.forAll + (Android.forSpecificFile[file.originalFile]?.let { listOf(it) } ?: emptyList())
return transformers.fold(content) { text, transformer -> transformer(text) }
}
}
useSourcePreprocessor({ AndroidTransformingPreprocessor(it) })
}
companion object {
@@ -5,6 +5,8 @@
package org.jetbrains.kotlin.test.runners
import java.io.File
object TransformersFunctions {
@JvmStatic
fun replaceOptionalJvmInlineAnnotationWithReal(source: String): String {
@@ -15,4 +17,12 @@ object TransformersFunctions {
fun removeOptionalJvmInlineAnnotation(source: String): String {
return source.replace("OPTIONAL_JVM_INLINE_ANNOTATION", "")
}
object Android {
val forAll: List<(String) -> String> = listOf(
TransformersFunctions::replaceOptionalJvmInlineAnnotationWithReal,
)
val forSpecificFile: Map<File, (String) -> String> = mapOf(
)
}
}