diff --git a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt index 728fa6fba1f..01a7c13db28 100644 --- a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt +++ b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt @@ -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) { - 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 { diff --git a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTestIncremental.kt b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTestIncremental.kt new file mode 100644 index 00000000000..a6dd9a06a2e --- /dev/null +++ b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTestIncremental.kt @@ -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) { + 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") + } +} \ No newline at end of file