From 253b8587e4335914606e5f9e5618ceeee7643319 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Mon, 30 Mar 2020 18:14:36 +0300 Subject: [PATCH] [Gradle, JS] KT-36784 Composite build test #KT-32466 fixed #KT-36784 fixed #KT-36864 fixed --- .../jetbrains/kotlin/gradle/BaseGradleIT.kt | 19 +++++++----- .../kotlin/gradle/Kotlin2JsGradlePluginIT.kt | 29 +++++++++++++++++++ .../js-composite-build/app/build.gradle.kts | 19 ++++++++++++ .../app/settings.gradle.kts | 8 +++++ .../app/src/main/kotlin/Main.kt | 3 ++ .../js-composite-build/lib/build.gradle.kts | 17 +++++++++++ .../lib/settings.gradle.kts | 11 +++++++ .../lib/src/main/kotlin/Singleton.kt | 5 ++++ 8 files changed, 103 insertions(+), 8 deletions(-) create mode 100755 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/app/build.gradle.kts create mode 100755 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/app/settings.gradle.kts create mode 100755 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/app/src/main/kotlin/Main.kt create mode 100755 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/build.gradle.kts create mode 100755 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/settings.gradle.kts create mode 100755 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/src/main/kotlin/Singleton.kt diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt index 9d8086607c7..e75cb4350f2 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt @@ -215,7 +215,12 @@ abstract class BaseGradleIT { val jsCompilerType: KotlinJsCompilerType? = null ) - data class KaptOptions(val verbose: Boolean, val useWorkers: Boolean, val incrementalKapt: Boolean = false, val includeCompileClasspath: Boolean = true) + data class KaptOptions( + val verbose: Boolean, + val useWorkers: Boolean, + val incrementalKapt: Boolean = false, + val includeCompileClasspath: Boolean = true + ) open inner class Project( val projectName: String, @@ -630,13 +635,11 @@ Finished executing task ':$taskName'| } fun Project.gradleProperties(): File = - listOf("gradle.properties").map { - File(projectDir, it).also { file -> - if (!file.exists()) { - file.createNewFile() - } + File(projectDir, "gradle.properties").also { file -> + if (!file.exists()) { + file.createNewFile() } - }.single() + } /** * @param assertionFileName path to xml with expected test results, relative to test resources root @@ -709,7 +712,7 @@ Finished executing task ':$taskName'| } private fun prettyPrintXml(uglyXml: String): String = - XMLOutputter(Format.getPrettyFormat()).outputString(SAXBuilder().build(uglyXml.reader())) + XMLOutputter(Format.getPrettyFormat()).outputString(SAXBuilder().build(uglyXml.reader())) private fun Project.createGradleTailParameters(options: BuildOptions, params: Array = arrayOf()): List = params.toMutableList().apply { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt index 1e6efa63de9..72b1e037924 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt @@ -548,6 +548,35 @@ abstract class AbstractKotlin2JsGradlePluginIT(private val irBackend: Boolean) : } } + @Test + fun testJsCompositeBuild() { + val rootProjectName = "js-composite-build" + val appProject = transformProjectWithPluginsDsl( + projectName = "app", + directoryPrefix = rootProjectName, + wrapperVersion = GradleVersionRequired.AtLeast("5.3") + ) + + val libProject = transformProjectWithPluginsDsl( + projectName = "lib", + directoryPrefix = rootProjectName, + wrapperVersion = GradleVersionRequired.AtLeast("5.3") + ) + + if (irBackend) { + libProject.gradleProperties().appendText(jsCompilerType(KotlinJsCompilerType.IR)) + appProject.gradleProperties().appendText(jsCompilerType(KotlinJsCompilerType.IR)) + } + + libProject.projectDir.copyRecursively(appProject.projectDir.resolve(libProject.projectDir.name)) + + with(appProject) { + build("build") { + assertSuccessful() + } + } + } + @Test fun testBrowserDistribution() = with(Project("kotlin-js-browser-project", GradleVersionRequired.AtLeast("4.10.2"))) { setupWorkingDir() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/app/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/app/build.gradle.kts new file mode 100755 index 00000000000..c8f9d509a08 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/app/build.gradle.kts @@ -0,0 +1,19 @@ +plugins { + kotlin("js") version "" +} + +repositories { + jcenter() + mavenLocal() + mavenCentral() +} + +kotlin.js { + binaries.executable() + nodejs() +} + +dependencies { + implementation(kotlin("stdlib-js")) + implementation("com.example:lib2") +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/app/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/app/settings.gradle.kts new file mode 100755 index 00000000000..649193e6640 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/app/settings.gradle.kts @@ -0,0 +1,8 @@ +pluginManagement { + repositories { + mavenLocal() + gradlePluginPortal() + } +} + +includeBuild("lib") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/app/src/main/kotlin/Main.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/app/src/main/kotlin/Main.kt new file mode 100755 index 00000000000..2104dcb874e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/app/src/main/kotlin/Main.kt @@ -0,0 +1,3 @@ +fun main() { + println(Singleton.test()) +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/build.gradle.kts new file mode 100755 index 00000000000..fa2da491278 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/build.gradle.kts @@ -0,0 +1,17 @@ +group = "com.example" + +plugins { + kotlin("js") version "" +} + +repositories { + jcenter() + mavenCentral() + mavenLocal() +} + +kotlin.target.nodejs() + +dependencies { + implementation(kotlin("stdlib-js")) +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/settings.gradle.kts new file mode 100755 index 00000000000..f9bb2765477 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/settings.gradle.kts @@ -0,0 +1,11 @@ +rootProject.name = "lib2" + +pluginManagement { + repositories { + gradlePluginPortal() + + mavenLocal() + + mavenCentral() + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/src/main/kotlin/Singleton.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/src/main/kotlin/Singleton.kt new file mode 100755 index 00000000000..9c69ccb147e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/src/main/kotlin/Singleton.kt @@ -0,0 +1,5 @@ +object Singleton { + fun test(): String { + return "42" + } +}