Disable scripting plugin in JPS tests
JVM compiler loads scripting plugin by default, which in turn performs script template discovery in compile classpath. Classloading and template discovery takes noticeable amount of time in JPS tests, because of relatively big number of short compilations. Disabling scripting plugin in most JPS+JVM tests speeds up JPS tests by ~8% compared to the result before all optimizations.
This commit is contained in:
@@ -974,7 +974,7 @@ fun main(args: Array<String>) {
|
||||
}
|
||||
|
||||
testGroup("jps-plugin/jps-tests/test", "jps-plugin/testData") {
|
||||
testClass<AbstractIncrementalJpsTest> {
|
||||
testClass<AbstractIncrementalJvmJpsTest> {
|
||||
model("incremental/multiModule/common", extension = null, excludeParentDirs = true)
|
||||
model("incremental/multiModule/jvm", extension = null, excludeParentDirs = true)
|
||||
model("incremental/multiModule/multiplatform/custom", extension = null, excludeParentDirs = true)
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.jps.targets.KotlinModuleBuildTarget
|
||||
/**
|
||||
* @see [jps-plugin/testData/incremental/cacheVersionChanged/README.md]
|
||||
*/
|
||||
abstract class AbstractIncrementalCacheVersionChangedTest : AbstractIncrementalJpsTest(allowNoFilesWithSuffixInTestData = true) {
|
||||
abstract class AbstractIncrementalCacheVersionChangedTest : AbstractIncrementalJvmJpsTest(allowNoFilesWithSuffixInTestData = true) {
|
||||
override fun performAdditionalModifications(modifications: List<Modification>) {
|
||||
val modifiedFiles = modifications.filterIsInstance<ModifyContent>().map { it.path }
|
||||
val targets = projectDescriptor.allModuleTargets
|
||||
|
||||
@@ -44,6 +44,7 @@ import org.jetbrains.jps.model.java.JpsJavaExtensionService
|
||||
import org.jetbrains.jps.model.library.sdk.JpsSdk
|
||||
import org.jetbrains.jps.util.JpsPathUtil
|
||||
import org.jetbrains.kotlin.cli.common.KOTLIN_COMPILER_ENVIRONMENT_KEEPALIVE_PROPERTY
|
||||
import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
|
||||
import org.jetbrains.kotlin.cli.common.arguments.K2MetadataCompilerArguments
|
||||
import org.jetbrains.kotlin.config.IncrementalCompilation
|
||||
import org.jetbrains.kotlin.incremental.LookupSymbol
|
||||
@@ -510,6 +511,8 @@ abstract class AbstractIncrementalJpsTest(
|
||||
val out = getAbsolutePath("${module.name}/out")
|
||||
File(out).mkdirs()
|
||||
compilerArguments.destination = out
|
||||
} else if (compilerArguments is K2JVMCompilerArguments) {
|
||||
compilerArguments.disableDefaultScriptingPlugin = true
|
||||
}
|
||||
|
||||
module.jpsModule.container.setChild(
|
||||
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||
* that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.jps.build
|
||||
|
||||
import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
|
||||
import org.jetbrains.kotlin.jps.model.k2JvmCompilerArguments
|
||||
|
||||
abstract class AbstractIncrementalJvmJpsTest(
|
||||
allowNoFilesWithSuffixInTestData: Boolean = false
|
||||
) : AbstractIncrementalJpsTest(allowNoFilesWithSuffixInTestData = allowNoFilesWithSuffixInTestData) {
|
||||
override fun overrideModuleSettings() {
|
||||
myProject.k2JvmCompilerArguments = K2JVMCompilerArguments().also {
|
||||
it.disableDefaultScriptingPlugin = true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -88,6 +88,7 @@ abstract class AbstractJvmLookupTrackerTest : AbstractLookupTrackerTest() {
|
||||
)
|
||||
|
||||
val args = K2JVMCompilerArguments().apply {
|
||||
disableDefaultScriptingPlugin = true
|
||||
buildFile = moduleFile.canonicalPath
|
||||
reportOutputFiles = true
|
||||
}
|
||||
|
||||
+169
-169
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -28,7 +28,7 @@ import java.io.File
|
||||
|
||||
abstract class AbstractJvmProtoComparisonTest : AbstractProtoComparisonTest<LocalFileKotlinClass>() {
|
||||
override fun compileAndGetClasses(sourceDir: File, outputDir: File): Map<ClassId, LocalFileKotlinClass> {
|
||||
MockLibraryUtil.compileKotlin(sourceDir.path, outputDir)
|
||||
MockLibraryUtil.compileKotlin(sourceDir.path, outputDir, extraOptions = listOf("-Xdisable-default-scripting-plugin"))
|
||||
|
||||
val classFiles = outputDir.walkMatching { it.name.endsWith(".class") }
|
||||
val localClassFiles = classFiles.map { LocalFileKotlinClass.create(it)!! }
|
||||
|
||||
Reference in New Issue
Block a user