diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt index 2c1b712e50a..6c815a6807c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt @@ -169,6 +169,21 @@ class HierarchicalMppIT : BaseGradleIT() { } } + @Test + fun testHmppWithProjectJsIrDependency() { + with(Project("hierarchical-mpp-with-js-project-dependency", gradleVersion)) { + setupWorkingDir() + gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl) + + build( + "assemble", + options = defaultBuildOptions().copy(jsCompilerType = KotlinJsCompilerType.IR) + ) { + assertSuccessful() + } + } + } + private fun publishThirdPartyLib( projectName: String = "third-party-lib", directoryPrefix: String = "hierarchical-mpp-published-modules", diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-project-dependency/my-lib-foo/src/jvmAndJsMain/kotlin/FooJvmAndJs.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-project-dependency/my-lib-foo/src/jvmAndJsMain/kotlin/FooJvmAndJs.kt index a7c110e4c7d..d3963c4deb3 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-project-dependency/my-lib-foo/src/jvmAndJsMain/kotlin/FooJvmAndJs.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-project-dependency/my-lib-foo/src/jvmAndJsMain/kotlin/FooJvmAndJs.kt @@ -1,3 +1,8 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + package com.example.foo import com.example.thirdparty.thirdPartyFun @@ -7,4 +12,4 @@ actual fun foo() = fooJvmAndJs() fun fooJvmAndJs(): String { thirdPartyFun() return fooCommon() -} \ No newline at end of file +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-published-modules/my-lib-foo/src/jvmAndJsMain/kotlin/FooJvmAndJs.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-published-modules/my-lib-foo/src/jvmAndJsMain/kotlin/FooJvmAndJs.kt index a7c110e4c7d..d3963c4deb3 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-published-modules/my-lib-foo/src/jvmAndJsMain/kotlin/FooJvmAndJs.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-published-modules/my-lib-foo/src/jvmAndJsMain/kotlin/FooJvmAndJs.kt @@ -1,3 +1,8 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + package com.example.foo import com.example.thirdparty.thirdPartyFun @@ -7,4 +12,4 @@ actual fun foo() = fooJvmAndJs() fun fooJvmAndJs(): String { thirdPartyFun() return fooCommon() -} \ No newline at end of file +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/build.gradle.kts new file mode 100644 index 00000000000..7d8397d5322 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/build.gradle.kts @@ -0,0 +1,10 @@ +plugins { + kotlin("multiplatform").version("").apply(false) +} + +allprojects { + repositories { + mavenLocal() + jcenter() + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/gradle.properties new file mode 100644 index 00000000000..0ae1e640ff1 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/gradle.properties @@ -0,0 +1,2 @@ +kotlin.mpp.enableGranularSourceSetsMetadata=true +kotlin.mpp.enableCompatibilityMetadataVariant=true \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/my-app/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/my-app/build.gradle.kts new file mode 100644 index 00000000000..f41d2cd603a --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/my-app/build.gradle.kts @@ -0,0 +1,43 @@ +plugins { + kotlin("multiplatform") +} + +repositories { + mavenLocal() + jcenter() +} + +group = "com.example.app" +version = "1.0" + +kotlin { + js() + + sourceSets { + val commonMain by getting { + dependencies { + implementation(kotlin("stdlib-common")) + } + } + + val commonTest by getting { + dependencies { + implementation(kotlin("test-common")) + implementation(kotlin("test-annotations-common")) + } + } + + js().compilations["main"].defaultSourceSet { + dependencies { + implementation(project(":my-lib-foo")) + implementation(kotlin("stdlib-js")) + } + } + + js().compilations["test"].defaultSourceSet { + dependencies { + implementation(kotlin("test-js")) + } + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/my-app/src/jsMain/kotlin/appJs.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/my-app/src/jsMain/kotlin/appJs.kt new file mode 100644 index 00000000000..6c32f96fa43 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/my-app/src/jsMain/kotlin/appJs.kt @@ -0,0 +1,12 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package com.example.app + +import com.example.foo.foo + +fun appJs() { + foo() +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/my-lib-foo/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/my-lib-foo/build.gradle.kts new file mode 100644 index 00000000000..1f44232d852 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/my-lib-foo/build.gradle.kts @@ -0,0 +1,29 @@ +plugins { + kotlin("js") + `maven-publish` +} + +repositories { + mavenLocal() + jcenter() +} + +group = "com.example.foo" +version = "1.0" + +kotlin { + js() + + sourceSets { + js().compilations["main"].defaultSourceSet { + dependencies { + implementation(kotlin("stdlib-js")) + } + } + js().compilations["test"].defaultSourceSet { + dependencies { + implementation(kotlin("test-js")) + } + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/my-lib-foo/src/main/kotlin/Foo.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/my-lib-foo/src/main/kotlin/Foo.kt new file mode 100644 index 00000000000..66d9ab90638 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/my-lib-foo/src/main/kotlin/Foo.kt @@ -0,0 +1,8 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package com.example.foo + +fun foo() = "foo" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/settings.gradle.kts new file mode 100644 index 00000000000..941a4800190 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-with-js-project-dependency/settings.gradle.kts @@ -0,0 +1,12 @@ +pluginManagement { + repositories { + mavenLocal() + gradlePluginPortal() + } +} + +rootProject.name = "hierarchical-mpp-with-js" + +include("my-lib-foo", "my-app") + +enableFeaturePreview("GRADLE_METADATA")