From d085e66aa3e14f158f765626b2a67848a6eb598f Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Wed, 27 Feb 2019 18:55:31 +0300 Subject: [PATCH] [JS IR BE] Optimize test performance * temporary disable verification * restore default/full runtime source set scheme --- .../generators/tests/GenerateIrRuntime.kt | 30 +++++++++------- .../kotlin/js/test/BasicIrBoxTest.kt | 34 +++++++++++-------- 2 files changed, 37 insertions(+), 27 deletions(-) diff --git a/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateIrRuntime.kt b/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateIrRuntime.kt index 1e2a58764d3..44d04a61407 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateIrRuntime.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateIrRuntime.kt @@ -40,8 +40,8 @@ fun buildConfiguration(environment: KotlinCoreEnvironment): CompilerConfiguratio return runtimeConfiguration } -private val resultJs = "js/js.translator/testData/out/klibs/result.js" -private val runtimeKlibPath = "js/js.translator/testData/out/klibs/runtime/" +private val fullRuntimeKlibPath = "js/js.translator/testData/out/klibs/runtimeFull/" +private val defaultRuntimeKlibPath = "js/js.translator/testData/out/klibs/runtimeDefault/" fun main() { @@ -56,15 +56,21 @@ fun main() { return psiManager.findFile(file) as KtFile } - val result = compile( - environment.project, - (JsIrTestRuntime.FULL.sources).map(::createPsiFile), - buildConfiguration(environment), - emptyList(), - CompilationMode.KLIB_WITH_JS, - emptyList(), - runtimeKlibPath - ) - result.generatedCode?.let { File(resultJs).writeText(it) } + fun buildKlib(sources: List, outputPath: String) { + val result = compile( + environment.project, + sources.map(::createPsiFile), + buildConfiguration(environment), + emptyList(), + CompilationMode.KLIB_WITH_JS, + emptyList(), + outputPath + ) + + result.generatedCode?.let { File(outputPath, "result.js").writeText(it) } + } + + buildKlib(JsIrTestRuntime.FULL.sources, fullRuntimeKlibPath) + buildKlib(JsIrTestRuntime.DEFAULT.sources, defaultRuntimeKlibPath) } \ No newline at end of file diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt index e621f99d08d..b81204a9870 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.js.test -import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.ir.backend.js.CompilationMode import org.jetbrains.kotlin.ir.backend.js.CompiledModule import org.jetbrains.kotlin.ir.backend.js.compile @@ -17,13 +16,13 @@ import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.test.TargetBackend import java.io.File -private var runtimeResults = mutableMapOf() - -private val runtimeKlibPath = "js/js.translator/testData/out/klibs/runtime/" +private val fullRuntimeKlibPath = "js/js.translator/testData/out/klibs/runtimeFull/" +private val defaultRuntimeKlibPath = "js/js.translator/testData/out/klibs/runtimeDefault/" private val JS_IR_RUNTIME_MODULE_NAME = "JS_IR_RUNTIME" -private val runtimeKlib = CompiledModule(JS_IR_RUNTIME_MODULE_NAME, null, null, runtimeKlibPath, emptyList(), true) +private val fullRuntimeKlib = CompiledModule(JS_IR_RUNTIME_MODULE_NAME, null, null, fullRuntimeKlibPath, emptyList(), true) +private val defaultRuntimeKlib = CompiledModule(JS_IR_RUNTIME_MODULE_NAME, null, null, defaultRuntimeKlibPath, emptyList(), true) abstract class BasicIrBoxTest( pathToTestDir: String, @@ -53,6 +52,9 @@ abstract class BasicIrBoxTest( super.doTest(filePath, expectedResult, mainCallParameters, coroutinesPackage) } + private val runtimes = mapOf(JsIrTestRuntime.DEFAULT to defaultRuntimeKlib, + JsIrTestRuntime.FULL to fullRuntimeKlib) + override fun translateFiles( units: List, outputFile: File, @@ -73,17 +75,19 @@ abstract class BasicIrBoxTest( .filterNot { it.virtualFilePath.contains(BasicBoxTest.COMMON_FILES_DIR_PATH) } // config.configuration.put(CommonConfigurationKeys.EXCLUDED_ELEMENTS_FROM_DUMPING, setOf("")) - config.configuration.put( - CommonConfigurationKeys.PHASES_TO_VALIDATE_AFTER, - setOf( - "RemoveInlineFunctionsWithReifiedTypeParametersLowering", - "InnerClassConstructorCallsLowering", - "InlineClassLowering", "ConstLowering" - ) - ) +// config.configuration.put( +// CommonConfigurationKeys.PHASES_TO_VALIDATE_AFTER, +// setOf( +// "RemoveInlineFunctionsWithReifiedTypeParametersLowering", +// "InnerClassConstructorCallsLowering", +// "InlineClassLowering", "ConstLowering" +// ) +// ) + + val runtimeKlib = runtimes[runtime] val dependencyNames = config.configuration[JSConfigurationKeys.LIBRARIES]!!.map { File(it).name } - val dependencies = listOf(runtimeKlib) + dependencyNames.mapNotNull { + val dependencies = listOfNotNull(runtimeKlib) + dependencyNames.mapNotNull { compilationCache[it] } @@ -103,7 +107,7 @@ abstract class BasicIrBoxTest( listOf(FqName((testPackage?.let { "$it." } ?: "") + testFunction)), if (isMainModule) CompilationMode.JS_AGAINST_KLIB else CompilationMode.KLIB, dependencies, - klibPath = actualOutputFile + actualOutputFile ) compilationCache[outputFile.name.replace(".js", ".meta.js")] = result