[Gradle, JS] Make simple K/JS IC test to cover IR backend as well

This commit is contained in:
Alexander Likhachev
2022-07-06 12:49:36 +02:00
committed by Space
parent d2450268f6
commit 07c9cfd486
@@ -257,51 +257,6 @@ class Kotlin2JsIrGradlePluginIT : AbstractKotlin2JsGradlePluginIT(true) {
@JsGradlePluginTests
class Kotlin2JsGradlePluginIT : AbstractKotlin2JsGradlePluginIT(false) {
@DisplayName("incremental compilation for js works")
@GradleTest
fun testIncrementalCompilation(gradleVersion: GradleVersion) {
val buildOptions = defaultBuildOptions.copy(logLevel = LogLevel.DEBUG)
project("kotlin2JsICProject", gradleVersion, buildOptions = buildOptions) {
val modules = listOf("app", "lib")
val mainFiles = modules.flatMapTo(LinkedHashSet()) {
projectPath.resolve("$it/src/main").allKotlinFiles
}
build("compileKotlinJs", "compileTestKotlinJs") {
checkIrCompilationMessage()
assertOutputContains(USING_JS_INCREMENTAL_COMPILATION_MESSAGE)
if (irBackend) {
assertCompiledKotlinSources(mainFiles.relativizeTo(projectPath), output)
} else {
assertCompiledKotlinSources(projectPath.allKotlinFiles.relativizeTo(projectPath), output)
}
}
build("compileKotlinJs", "compileTestKotlinJs") {
assertCompiledKotlinSources(emptyList(), output)
}
val modifiedFile = subProject("lib").kotlinSourcesDir().resolve("A.kt") ?: error("No A.kt file in test project")
modifiedFile.modify {
it.replace("val x = 0", "val x = \"a\"")
}
build("compileKotlinJs", "compileTestKotlinJs") {
checkIrCompilationMessage()
assertOutputContains(USING_JS_INCREMENTAL_COMPILATION_MESSAGE)
val affectedFiles = listOf("A.kt", "useAInLibMain.kt", "useAInAppMain.kt", "useAInAppTest.kt").mapNotNull {
projectPath.findInPath(it)
}
if (irBackend) {
// only klib ic is supported for now, so tests are generated non-incrementally with ir backend
assertCompiledKotlinSources(affectedFiles.filter { it in mainFiles }.relativizeTo(projectPath), output)
} else {
assertCompiledKotlinSources(affectedFiles.relativizeTo(projectPath), output)
}
}
}
}
@DisplayName("incremental compilation with multiple js modules after compilation error works")
@GradleTest
fun testIncrementalCompilationWithMultipleModulesAfterCompilationError(gradleVersion: GradleVersion) {
@@ -734,6 +689,36 @@ abstract class AbstractKotlin2JsGradlePluginIT(protected val irBackend: Boolean)
}
}
@DisplayName("incremental compilation for js works")
@GradleTest
fun testIncrementalCompilation(gradleVersion: GradleVersion) {
val buildOptions = defaultBuildOptions.copy(logLevel = LogLevel.DEBUG)
project("kotlin2JsICProject", gradleVersion, buildOptions = buildOptions) {
build("compileKotlinJs", "compileTestKotlinJs") {
checkIrCompilationMessage()
assertOutputContains(USING_JS_INCREMENTAL_COMPILATION_MESSAGE)
assertCompiledKotlinSources(projectPath.allKotlinFiles.relativizeTo(projectPath), output)
}
build("compileKotlinJs", "compileTestKotlinJs") {
assertCompiledKotlinSources(emptyList(), output)
}
val modifiedFile = subProject("lib").kotlinSourcesDir().resolve("A.kt") ?: error("No A.kt file in test project")
modifiedFile.modify {
it.replace("val x = 0", "val x = \"a\"")
}
build("compileKotlinJs", "compileTestKotlinJs") {
checkIrCompilationMessage()
assertOutputContains(USING_JS_INCREMENTAL_COMPILATION_MESSAGE)
val affectedFiles = listOf("A.kt", "useAInLibMain.kt", "useAInAppMain.kt", "useAInAppTest.kt").mapNotNull {
projectPath.findInPath(it)
}
assertCompiledKotlinSources(affectedFiles.relativizeTo(projectPath), output)
}
}
}
@DisplayName("non-incremental compilation works")
@GradleTest
fun testIncrementalCompilationDisabled(gradleVersion: GradleVersion) {