diff --git a/libraries/tools/kotlin-gradle-plugin/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin/build.gradle.kts index f2becb99393..1dfdc7ef9ff 100644 --- a/libraries/tools/kotlin-gradle-plugin/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin/build.gradle.kts @@ -10,6 +10,9 @@ plugins { id("jps-compatible") } +apply(from = "functionalTest.gradle.kts") +val functionalTestImplementation by configurations + configure { isAutomatedPublishing = false } @@ -79,7 +82,9 @@ dependencies { compileOnly("com.android.tools.build:gradle:3.0.0") { isTransitive = false } compileOnly("com.android.tools.build:gradle-core:3.0.0") { isTransitive = false } compileOnly("com.android.tools.build:builder-model:3.0.0") { isTransitive = false } - testImplementation("com.android.tools.build:gradle:4.0.1") + functionalTestImplementation("com.android.tools.build:gradle:4.0.1") { + because("Functional tests are using APIs from Android. Latest Version is used to avoid NoClassDefFoundError") + } testCompile(intellijDep()) { includeJars("junit", "serviceMessages", rootProject = rootProject) } diff --git a/libraries/tools/kotlin-gradle-plugin/functionalTest.gradle.kts b/libraries/tools/kotlin-gradle-plugin/functionalTest.gradle.kts new file mode 100644 index 00000000000..55c126d1c5f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/functionalTest.gradle.kts @@ -0,0 +1,27 @@ +import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension + +project.extensions.getByType().target.compilations { + val main by getting + create("functionalTest") { + associateWith(main) + val functionalTest by tasks.register("functionalTest") { + group = JavaBasePlugin.VERIFICATION_GROUP + description = "Runs functional tests" + testClassesDirs = output.classesDirs + classpath = sourceSets["functionalTest"].runtimeClasspath + } + tasks.named("check") { + dependsOn(functionalTest) + } + } +} + +configurations.getByName("functionalTestImplementation") { + extendsFrom(configurations.getByName("implementation")) + extendsFrom(configurations.getByName("testImplementation")) +} + +configurations.getByName("functionalTestRuntimeOnly") { + extendsFrom(configurations.getByName("runtimeOnly")) + extendsFrom(configurations.getByName("testRuntimeOnly")) +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/targets/android/KotlinAndroidDependsOnEdgesTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KotlinAndroidDependsOnEdgesTest.kt similarity index 97% rename from libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/targets/android/KotlinAndroidDependsOnEdgesTest.kt rename to libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KotlinAndroidDependsOnEdgesTest.kt index 0eaa81ac20b..fa437508ba9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/targets/android/KotlinAndroidDependsOnEdgesTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KotlinAndroidDependsOnEdgesTest.kt @@ -2,8 +2,9 @@ * 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 org.jetbrains.kotlin.gradle.targets.android +// TODO KT-34102 +@file:Suppress("invisible_reference", "invisible_member") +package org.jetbrains.kotlin.gradle import com.android.build.gradle.LibraryExtension import org.gradle.api.internal.project.ProjectInternal