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 3b34ed6fdb8..da441e9df45 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 @@ -1,6 +1,7 @@ package org.jetbrains.kotlin.gradle import org.gradle.api.logging.LogLevel +import org.gradle.wrapper.GradleUserHomeLookup import org.jetbrains.kotlin.gradle.tasks.USING_JS_INCREMENTAL_COMPILATION_MESSAGE import org.jetbrains.kotlin.gradle.util.getFileByName import org.jetbrains.kotlin.gradle.util.getFilesByNames @@ -413,4 +414,26 @@ class Kotlin2JsGradlePluginIT : BaseGradleIT() { assertFileExists("build/js/node_modules/puppeteer/.local-chromium") } } + + @Test + fun testYarnSetup() = with(Project("yarn-setup", GradleVersionRequired.AtLeast("4.10.2"))) { + setupWorkingDir() + gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl) + gradleSettingsScript().modify(::transformBuildScriptWithPluginsDsl) + + GradleUserHomeLookup.gradleUserHome().resolve("yarn").deleteRecursively() + + build("kotlinYarnSetup") { + assertSuccessful() + + assertTasksExecuted( + ":kotlinYarnSetup" + ) + + assertFileExists( + path = GradleUserHomeLookup.gradleUserHome().resolve("yarn").canonicalPath, + inWorkingDir = false + ) + } + } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/yarn-setup/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/yarn-setup/build.gradle.kts new file mode 100644 index 00000000000..c0fce418244 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/yarn-setup/build.gradle.kts @@ -0,0 +1,27 @@ +import org.jetbrains.kotlin.gradle.targets.js.yarn.yarn + +plugins { + kotlin("js") version "" +} + +group = "com.example" +version = "1.0" + +repositories { + mavenLocal() + jcenter() +} + +yarn + +kotlin.sourceSets { + getByName("main") { + dependencies { + implementation(kotlin("stdlib-js")) + } + } +} + +kotlin.target { + nodejs() +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/yarn-setup/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/yarn-setup/gradle.properties new file mode 100644 index 00000000000..a4a181c3de2 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/yarn-setup/gradle.properties @@ -0,0 +1 @@ +kotlin.tests.individualTaskReports=true \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/yarn-setup/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/yarn-setup/settings.gradle.kts new file mode 100644 index 00000000000..1cdf80f4490 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/yarn-setup/settings.gradle.kts @@ -0,0 +1,8 @@ +pluginManagement { + repositories { + mavenLocal() + gradlePluginPortal() + } +} + +rootProject.name = "yarn-setup" \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/yarn-setup/src/main/kotlin/Main.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/yarn-setup/src/main/kotlin/Main.kt new file mode 100644 index 00000000000..c57768be63f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/yarn-setup/src/main/kotlin/Main.kt @@ -0,0 +1,10 @@ +/* + * Copyright 2010-2019 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 + +fun main() { + println("Hello, Yarn") +} \ No newline at end of file