Common tests are discoverable via platform modules test classpath
Introduce KotlinGradleOrderEnumerationHandler
and patch KotlinAndroidGradleOrderEnumerationHandler:
- If 'Android Support' plugin is off KAndroidGradleOEH will not be available and KGOEH will be used
- Make KAndroidGOEH implement a different EP so it replaces KGOEH when it is available
This commit is contained in:
+6
-15
@@ -11,13 +11,12 @@ import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
|||||||
import com.intellij.openapi.module.Module
|
import com.intellij.openapi.module.Module
|
||||||
import com.intellij.openapi.module.ModuleManager
|
import com.intellij.openapi.module.ModuleManager
|
||||||
import com.intellij.openapi.roots.ModuleRootModel
|
import com.intellij.openapi.roots.ModuleRootModel
|
||||||
|
import com.intellij.openapi.roots.OrderEnumerationHandler
|
||||||
import com.intellij.openapi.roots.OrderRootType
|
import com.intellij.openapi.roots.OrderRootType
|
||||||
import com.intellij.openapi.vfs.VfsUtilCore
|
import com.intellij.openapi.vfs.VfsUtilCore
|
||||||
import org.jetbrains.kotlin.config.KotlinFacetSettingsProvider
|
import org.jetbrains.kotlin.idea.caches.project.isMPPModule
|
||||||
import org.jetbrains.kotlin.idea.core.isAndroidModule
|
import org.jetbrains.kotlin.idea.core.isAndroidModule
|
||||||
import org.jetbrains.kotlin.idea.facet.KotlinFacet
|
import org.jetbrains.kotlin.idea.facet.KotlinFacet
|
||||||
import org.jetbrains.kotlin.platform.impl.isCommon
|
|
||||||
import org.jetbrains.plugins.gradle.execution.GradleOrderEnumeratorHandler
|
|
||||||
import org.jetbrains.plugins.gradle.model.ExternalSourceDirectorySet
|
import org.jetbrains.plugins.gradle.model.ExternalSourceDirectorySet
|
||||||
import org.jetbrains.plugins.gradle.service.project.data.ExternalProjectDataCache
|
import org.jetbrains.plugins.gradle.service.project.data.ExternalProjectDataCache
|
||||||
import org.jetbrains.plugins.gradle.util.GradleConstants
|
import org.jetbrains.plugins.gradle.util.GradleConstants
|
||||||
@@ -33,9 +32,7 @@ import java.io.File
|
|||||||
Everything works for Java-only projects because there's only a single classes directory,
|
Everything works for Java-only projects because there's only a single classes directory,
|
||||||
but Kotlin Gradle plugin adds a separate output directory, and it's not attached by default.
|
but Kotlin Gradle plugin adds a separate output directory, and it's not attached by default.
|
||||||
*/
|
*/
|
||||||
class AndroidGradleOrderEnumerationHandler(module: Module) : GradleOrderEnumeratorHandler(module) {
|
class KotlinAndroidGradleOrderEnumerationHandler(private val module: Module) : OrderEnumerationHandler() {
|
||||||
override fun shouldProcessDependenciesRecursively() = false
|
|
||||||
|
|
||||||
override fun addCustomModuleRoots(
|
override fun addCustomModuleRoots(
|
||||||
type: OrderRootType,
|
type: OrderRootType,
|
||||||
rootModel: ModuleRootModel,
|
rootModel: ModuleRootModel,
|
||||||
@@ -85,17 +82,11 @@ class AndroidGradleOrderEnumerationHandler(module: Module) : GradleOrderEnumerat
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
class FactoryImpl : Factory() {
|
class FactoryImpl : OrderEnumerationHandler.Factory() {
|
||||||
override fun isApplicable(module: Module): Boolean {
|
override fun isApplicable(module: Module): Boolean {
|
||||||
return ExternalSystemApiUtil.isExternalSystemAwareModule(GradleConstants.SYSTEM_ID, module)
|
return ExternalSystemApiUtil.isExternalSystemAwareModule(GradleConstants.SYSTEM_ID, module) && !module.isMPPModule
|
||||||
&& !module.isMultiplatformModule()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun createHandler(module: Module) = AndroidGradleOrderEnumerationHandler(module)
|
override fun createHandler(module: Module) = KotlinAndroidGradleOrderEnumerationHandler(module)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun Module.isMultiplatformModule(): Boolean {
|
|
||||||
val settings = KotlinFacetSettingsProvider.getInstance(project).getInitializedSettings(this)
|
|
||||||
return settings.platform.isCommon || settings.implementedModuleNames.isNotEmpty()
|
|
||||||
}
|
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2018 JetBrains s.r.o. 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.idea.gradle.execution
|
||||||
|
|
||||||
|
import com.intellij.openapi.module.Module
|
||||||
|
import org.jetbrains.kotlin.idea.caches.project.isMPPModule
|
||||||
|
import org.jetbrains.plugins.gradle.execution.GradleOrderEnumeratorHandler
|
||||||
|
|
||||||
|
open class KotlinGradleOrderEnumerationHandler(module: Module) : GradleOrderEnumeratorHandler(module) {
|
||||||
|
override fun shouldIncludeTestsFromDependentModulesToTestClasspath(): Boolean {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
open class Factory : GradleOrderEnumeratorHandler.FactoryImpl() {
|
||||||
|
override fun isApplicable(module: Module): Boolean {
|
||||||
|
return module.isMPPModule
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun createHandler(module: Module) = KotlinGradleOrderEnumerationHandler(module)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -61,8 +61,7 @@
|
|||||||
|
|
||||||
<runConfigurationProducer implementation="org.jetbrains.kotlin.idea.run.KotlinTestClassGradleConfigurationProducer"/>
|
<runConfigurationProducer implementation="org.jetbrains.kotlin.idea.run.KotlinTestClassGradleConfigurationProducer"/>
|
||||||
<runConfigurationProducer implementation="org.jetbrains.kotlin.idea.run.KotlinTestMethodGradleConfigurationProducer"/>
|
<runConfigurationProducer implementation="org.jetbrains.kotlin.idea.run.KotlinTestMethodGradleConfigurationProducer"/>
|
||||||
|
<orderEnumerationHandlerFactory implementation="org.jetbrains.kotlin.android.KotlinAndroidGradleOrderEnumerationHandler$FactoryImpl" order="first"/>
|
||||||
<orderEnumerationHandlerFactory implementation="org.jetbrains.kotlin.android.AndroidGradleOrderEnumerationHandler$FactoryImpl" order="first"/>
|
|
||||||
</extensions>
|
</extensions>
|
||||||
|
|
||||||
<extensions defaultExtensionNs="org.jetbrains.kotlin">
|
<extensions defaultExtensionNs="org.jetbrains.kotlin">
|
||||||
|
|||||||
@@ -60,6 +60,7 @@
|
|||||||
|
|
||||||
<runConfigurationProducer implementation="org.jetbrains.kotlin.idea.run.KotlinTestClassGradleConfigurationProducer"/>
|
<runConfigurationProducer implementation="org.jetbrains.kotlin.idea.run.KotlinTestClassGradleConfigurationProducer"/>
|
||||||
<runConfigurationProducer implementation="org.jetbrains.kotlin.idea.run.KotlinTestMethodGradleConfigurationProducer"/>
|
<runConfigurationProducer implementation="org.jetbrains.kotlin.idea.run.KotlinTestMethodGradleConfigurationProducer"/>
|
||||||
|
<orderEnumerationHandlerFactory implementation="org.jetbrains.kotlin.android.KotlinAndroidGradleOrderEnumerationHandler$FactoryImpl" order="first"/>
|
||||||
|
|
||||||
</extensions>
|
</extensions>
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
<buildSystemTypeDetector implementation="org.jetbrains.kotlin.idea.configuration.GradleDetector"/>
|
<buildSystemTypeDetector implementation="org.jetbrains.kotlin.idea.configuration.GradleDetector"/>
|
||||||
</extensions>
|
</extensions>
|
||||||
|
|
||||||
|
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
|
||||||
|
<orderEnumerationHandlerFactory implementation="org.jetbrains.kotlin.idea.gradle.execution.KotlinGradleOrderEnumerationHandler$Factory" order="first"/>
|
||||||
|
</extensions>
|
||||||
|
|
||||||
<!-- NATIVE PART -->
|
<!-- NATIVE PART -->
|
||||||
<application-components>
|
<application-components>
|
||||||
<component>
|
<component>
|
||||||
|
|||||||
@@ -70,7 +70,7 @@
|
|||||||
<runConfigurationProducer implementation="org.jetbrains.kotlin.idea.run.KotlinTestClassGradleConfigurationProducer"/>
|
<runConfigurationProducer implementation="org.jetbrains.kotlin.idea.run.KotlinTestClassGradleConfigurationProducer"/>
|
||||||
<runConfigurationProducer implementation="org.jetbrains.kotlin.idea.run.KotlinTestMethodGradleConfigurationProducer"/>
|
<runConfigurationProducer implementation="org.jetbrains.kotlin.idea.run.KotlinTestMethodGradleConfigurationProducer"/>
|
||||||
|
|
||||||
<orderEnumerationHandlerFactory implementation="org.jetbrains.kotlin.android.AndroidGradleOrderEnumerationHandler$FactoryImpl" order="first"/>
|
<orderEnumerationHandlerFactory implementation="org.jetbrains.kotlin.android.KotlinAndroidGradleOrderEnumerationHandler$FactoryImpl" order="first"/>
|
||||||
</extensions>
|
</extensions>
|
||||||
|
|
||||||
<extensions defaultExtensionNs="org.jetbrains.kotlin">
|
<extensions defaultExtensionNs="org.jetbrains.kotlin">
|
||||||
|
|||||||
Reference in New Issue
Block a user