Minor: move 'KotlinJpsBuildTestIncremental' to separate file
This commit is contained in:
@@ -51,14 +51,12 @@ import org.jetbrains.jps.model.library.JpsOrderRootType
|
||||
import org.jetbrains.jps.model.module.JpsModule
|
||||
import org.jetbrains.jps.util.JpsPathUtil
|
||||
import org.jetbrains.kotlin.cli.common.Usage
|
||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||
import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
|
||||
import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler
|
||||
import org.jetbrains.kotlin.codegen.AsmUtil
|
||||
import org.jetbrains.kotlin.codegen.JvmCodegenUtil
|
||||
import org.jetbrains.kotlin.config.IncrementalCompilation
|
||||
import org.jetbrains.kotlin.config.KotlinCompilerVersion.TEST_IS_PRE_RELEASE_SYSTEM_PROPERTY
|
||||
import org.jetbrains.kotlin.config.LanguageVersion
|
||||
import org.jetbrains.kotlin.incremental.CacheVersion
|
||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||
import org.jetbrains.kotlin.incremental.withIC
|
||||
@@ -82,102 +80,6 @@ import java.net.URLClassLoader
|
||||
import java.util.*
|
||||
import java.util.regex.Pattern
|
||||
import java.util.zip.ZipOutputStream
|
||||
import kotlin.reflect.KMutableProperty1
|
||||
|
||||
class KotlinJpsBuildTestIncremental : KotlinJpsBuildTest() {
|
||||
var isICEnabledBackup: Boolean = false
|
||||
|
||||
override fun setUp() {
|
||||
super.setUp()
|
||||
isICEnabledBackup = IncrementalCompilation.isEnabled()
|
||||
IncrementalCompilation.setIsEnabled(true)
|
||||
}
|
||||
|
||||
override fun tearDown() {
|
||||
IncrementalCompilation.setIsEnabled(isICEnabledBackup)
|
||||
super.tearDown()
|
||||
}
|
||||
|
||||
fun testManyFiles() {
|
||||
doTest()
|
||||
|
||||
val module = myProject.modules.get(0)
|
||||
assertFilesExistInOutput(module, "foo/MainKt.class", "boo/BooKt.class", "foo/Bar.class")
|
||||
|
||||
checkWhen(touch("src/main.kt"), null, packageClasses("kotlinProject", "src/main.kt", "foo.MainKt"))
|
||||
checkWhen(touch("src/boo.kt"), null, packageClasses("kotlinProject", "src/boo.kt", "boo.BooKt"))
|
||||
checkWhen(touch("src/Bar.kt"), arrayOf("src/Bar.kt"), arrayOf(klass("kotlinProject", "foo.Bar")))
|
||||
|
||||
checkWhen(del("src/main.kt"),
|
||||
pathsToCompile = null,
|
||||
pathsToDelete = packageClasses("kotlinProject", "src/main.kt", "foo.MainKt"))
|
||||
assertFilesExistInOutput(module, "boo/BooKt.class", "foo/Bar.class")
|
||||
assertFilesNotExistInOutput(module, "foo/MainKt.class")
|
||||
|
||||
checkWhen(touch("src/boo.kt"), null, packageClasses("kotlinProject", "src/boo.kt", "boo.BooKt"))
|
||||
checkWhen(touch("src/Bar.kt"), null, arrayOf(klass("kotlinProject", "foo.Bar")))
|
||||
}
|
||||
|
||||
fun testManyFilesForPackage() {
|
||||
doTest()
|
||||
|
||||
val module = myProject.modules.get(0)
|
||||
assertFilesExistInOutput(module, "foo/MainKt.class", "boo/BooKt.class", "foo/Bar.class")
|
||||
|
||||
checkWhen(touch("src/main.kt"), null, packageClasses("kotlinProject", "src/main.kt", "foo.MainKt"))
|
||||
checkWhen(touch("src/boo.kt"), null, packageClasses("kotlinProject", "src/boo.kt", "boo.BooKt"))
|
||||
checkWhen(touch("src/Bar.kt"),
|
||||
arrayOf("src/Bar.kt"),
|
||||
arrayOf(klass("kotlinProject", "foo.Bar"),
|
||||
packagePartClass("kotlinProject", "src/Bar.kt", "foo.MainKt"),
|
||||
module("kotlinProject")))
|
||||
|
||||
checkWhen(del("src/main.kt"),
|
||||
pathsToCompile = null,
|
||||
pathsToDelete = packageClasses("kotlinProject", "src/main.kt", "foo.MainKt"))
|
||||
assertFilesExistInOutput(module, "boo/BooKt.class", "foo/Bar.class")
|
||||
|
||||
checkWhen(touch("src/boo.kt"), null, packageClasses("kotlinProject", "src/boo.kt", "boo.BooKt"))
|
||||
checkWhen(touch("src/Bar.kt"), null,
|
||||
arrayOf(klass("kotlinProject", "foo.Bar"),
|
||||
packagePartClass("kotlinProject", "src/Bar.kt", "foo.MainKt"),
|
||||
module("kotlinProject")))
|
||||
}
|
||||
|
||||
@WorkingDir("LanguageOrApiVersionChanged")
|
||||
fun testLanguageVersionChanged() {
|
||||
languageOrApiVersionChanged(CommonCompilerArguments::languageVersion)
|
||||
}
|
||||
|
||||
@WorkingDir("LanguageOrApiVersionChanged")
|
||||
fun testApiVersionChanged() {
|
||||
languageOrApiVersionChanged(CommonCompilerArguments::apiVersion)
|
||||
}
|
||||
|
||||
private fun languageOrApiVersionChanged(versionProperty: KMutableProperty1<CommonCompilerArguments, String?>) {
|
||||
initProject(JVM_MOCK_RUNTIME)
|
||||
|
||||
assertEquals(1, myProject.modules.size)
|
||||
val module = myProject.modules.first()
|
||||
val args = JpsKotlinCompilerSettings.getCommonCompilerArguments(module)
|
||||
|
||||
fun setVersion(newVersion: String) {
|
||||
versionProperty.set(args, newVersion)
|
||||
JpsKotlinCompilerSettings.setCommonCompilerArguments(myProject, args)
|
||||
}
|
||||
|
||||
assertNull(args.apiVersion)
|
||||
buildAllModules().assertSuccessful()
|
||||
|
||||
setVersion(LanguageVersion.LATEST_STABLE.versionString)
|
||||
buildAllModules().assertSuccessful()
|
||||
assertCompiled(KotlinBuilder.KOTLIN_BUILDER_NAME)
|
||||
|
||||
setVersion(LanguageVersion.KOTLIN_1_0.versionString)
|
||||
buildAllModules().assertSuccessful()
|
||||
assertCompiled(KotlinBuilder.KOTLIN_BUILDER_NAME, "src/Bar.kt", "src/Foo.kt")
|
||||
}
|
||||
}
|
||||
|
||||
open class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() {
|
||||
companion object {
|
||||
|
||||
+102
@@ -0,0 +1,102 @@
|
||||
package org.jetbrains.kotlin.jps.build
|
||||
|
||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||
import org.jetbrains.kotlin.config.IncrementalCompilation
|
||||
import org.jetbrains.kotlin.config.LanguageVersion
|
||||
import org.jetbrains.kotlin.jps.JpsKotlinCompilerSettings
|
||||
import kotlin.reflect.KMutableProperty1
|
||||
|
||||
class KotlinJpsBuildTestIncremental : KotlinJpsBuildTest() {
|
||||
var isICEnabledBackup: Boolean = false
|
||||
|
||||
override fun setUp() {
|
||||
super.setUp()
|
||||
isICEnabledBackup = IncrementalCompilation.isEnabled()
|
||||
IncrementalCompilation.setIsEnabled(true)
|
||||
}
|
||||
|
||||
override fun tearDown() {
|
||||
IncrementalCompilation.setIsEnabled(isICEnabledBackup)
|
||||
super.tearDown()
|
||||
}
|
||||
|
||||
fun testManyFiles() {
|
||||
doTest()
|
||||
|
||||
val module = myProject.modules.get(0)
|
||||
assertFilesExistInOutput(module, "foo/MainKt.class", "boo/BooKt.class", "foo/Bar.class")
|
||||
|
||||
checkWhen(touch("src/main.kt"), null, packageClasses("kotlinProject", "src/main.kt", "foo.MainKt"))
|
||||
checkWhen(touch("src/boo.kt"), null, packageClasses("kotlinProject", "src/boo.kt", "boo.BooKt"))
|
||||
checkWhen(touch("src/Bar.kt"), arrayOf("src/Bar.kt"), arrayOf(klass("kotlinProject", "foo.Bar")))
|
||||
|
||||
checkWhen(del("src/main.kt"),
|
||||
pathsToCompile = null,
|
||||
pathsToDelete = packageClasses("kotlinProject", "src/main.kt", "foo.MainKt"))
|
||||
assertFilesExistInOutput(module, "boo/BooKt.class", "foo/Bar.class")
|
||||
assertFilesNotExistInOutput(module, "foo/MainKt.class")
|
||||
|
||||
checkWhen(touch("src/boo.kt"), null, packageClasses("kotlinProject", "src/boo.kt", "boo.BooKt"))
|
||||
checkWhen(touch("src/Bar.kt"), null, arrayOf(klass("kotlinProject", "foo.Bar")))
|
||||
}
|
||||
|
||||
fun testManyFilesForPackage() {
|
||||
doTest()
|
||||
|
||||
val module = myProject.modules.get(0)
|
||||
assertFilesExistInOutput(module, "foo/MainKt.class", "boo/BooKt.class", "foo/Bar.class")
|
||||
|
||||
checkWhen(touch("src/main.kt"), null, packageClasses("kotlinProject", "src/main.kt", "foo.MainKt"))
|
||||
checkWhen(touch("src/boo.kt"), null, packageClasses("kotlinProject", "src/boo.kt", "boo.BooKt"))
|
||||
checkWhen(touch("src/Bar.kt"),
|
||||
arrayOf("src/Bar.kt"),
|
||||
arrayOf(klass("kotlinProject", "foo.Bar"),
|
||||
packagePartClass("kotlinProject", "src/Bar.kt", "foo.MainKt"),
|
||||
module("kotlinProject")))
|
||||
|
||||
checkWhen(del("src/main.kt"),
|
||||
pathsToCompile = null,
|
||||
pathsToDelete = packageClasses("kotlinProject", "src/main.kt", "foo.MainKt"))
|
||||
assertFilesExistInOutput(module, "boo/BooKt.class", "foo/Bar.class")
|
||||
|
||||
checkWhen(touch("src/boo.kt"), null, packageClasses("kotlinProject", "src/boo.kt", "boo.BooKt"))
|
||||
checkWhen(touch("src/Bar.kt"), null,
|
||||
arrayOf(klass("kotlinProject", "foo.Bar"),
|
||||
packagePartClass("kotlinProject", "src/Bar.kt", "foo.MainKt"),
|
||||
module("kotlinProject")))
|
||||
}
|
||||
|
||||
@WorkingDir("LanguageOrApiVersionChanged")
|
||||
fun testLanguageVersionChanged() {
|
||||
languageOrApiVersionChanged(CommonCompilerArguments::languageVersion)
|
||||
}
|
||||
|
||||
@WorkingDir("LanguageOrApiVersionChanged")
|
||||
fun testApiVersionChanged() {
|
||||
languageOrApiVersionChanged(CommonCompilerArguments::apiVersion)
|
||||
}
|
||||
|
||||
private fun languageOrApiVersionChanged(versionProperty: KMutableProperty1<CommonCompilerArguments, String?>) {
|
||||
initProject(LibraryDependency.JVM_MOCK_RUNTIME)
|
||||
|
||||
assertEquals(1, myProject.modules.size)
|
||||
val module = myProject.modules.first()
|
||||
val args = JpsKotlinCompilerSettings.getCommonCompilerArguments(module)
|
||||
|
||||
fun setVersion(newVersion: String) {
|
||||
versionProperty.set(args, newVersion)
|
||||
JpsKotlinCompilerSettings.setCommonCompilerArguments(myProject, args)
|
||||
}
|
||||
|
||||
assertNull(args.apiVersion)
|
||||
buildAllModules().assertSuccessful()
|
||||
|
||||
setVersion(LanguageVersion.LATEST_STABLE.versionString)
|
||||
buildAllModules().assertSuccessful()
|
||||
assertCompiled(KotlinBuilder.KOTLIN_BUILDER_NAME)
|
||||
|
||||
setVersion(LanguageVersion.KOTLIN_1_0.versionString)
|
||||
buildAllModules().assertSuccessful()
|
||||
assertCompiled(KotlinBuilder.KOTLIN_BUILDER_NAME, "src/Bar.kt", "src/Foo.kt")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user