Kotlin Ultimate: Add "Build" action to JS run configurations

#KT-20522 Fixed
This commit is contained in:
Alexey Sedunov
2018-01-22 12:54:53 +03:00
parent 8ffb205f1c
commit 80887a84ca
7 changed files with 35 additions and 5 deletions
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.idea.js.jsTestOutputFilePath
import org.jetbrains.kotlin.idea.nodejs.TestElementInfo
import org.jetbrains.kotlin.idea.nodejs.TestElementPath
import org.jetbrains.kotlin.idea.nodejs.getNodeJsEnvironmentVars
import org.jetbrains.kotlin.idea.run.addBuildTask
import org.jetbrains.kotlin.idea.util.projectStructure.module
private typealias JestTestElementInfo = TestElementInfo<JestRunSettings>
@@ -94,6 +95,7 @@ class KotlinJestRunConfigurationProducer : JestRunConfigurationProducer() {
configuration.runSettings = runSettings
sourceElement.set(enclosingTestElement)
configuration.setGeneratedName()
configuration.addBuildTask()
return true
}
}
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.idea.nodejs
import com.intellij.openapi.module.Module
import com.intellij.openapi.roots.ModuleRootManager
import com.intellij.psi.PsiDirectory
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.idea.util.projectStructure.getModuleDir
@@ -24,7 +25,10 @@ sealed class TestElementPath {
companion object {
fun isModuleAssociatedDir(element: PsiElement, module: Module): Boolean {
return element is PsiDirectory && module.getModuleDir() == element.virtualFile.path
if (element !is PsiDirectory) return false
val virtualFile = element.virtualFile
return (module.getModuleDir() == virtualFile.path
|| virtualFile == ModuleRootManager.getInstance(module).contentRoots.singleOrNull())
}
fun forElement(element: PsiElement, module: Module): TestElementPath? {
@@ -35,6 +35,7 @@ import org.jetbrains.kotlin.idea.js.jsTestOutputFilePath
import org.jetbrains.kotlin.idea.nodejs.TestElementInfo
import org.jetbrains.kotlin.idea.nodejs.TestElementPath
import org.jetbrains.kotlin.idea.nodejs.getNodeJsEnvironmentVars
import org.jetbrains.kotlin.idea.run.addBuildTask
import org.jetbrains.kotlin.idea.util.projectStructure.module
private typealias MochaTestElementInfo = TestElementInfo<MochaRunSettings>
@@ -155,6 +156,7 @@ class KotlinMochaRunConfigurationProducer : MochaRunConfigurationProducer() {
configuration.runSettings = runSettings
sourceElement.set(enclosingTestElement)
configuration.setGeneratedName()
configuration.addBuildTask()
return true
}
}
@@ -10,7 +10,7 @@ import com.intellij.openapi.module.Module
import com.intellij.openapi.roots.CompilerModuleExtension
import com.intellij.openapi.roots.ModuleRootManager
import com.intellij.openapi.util.io.FileUtil
import org.jetbrains.kotlin.idea.framework.isGradleModule
import org.jetbrains.kotlin.idea.js.shouldUseJpsOutput
import org.jetbrains.kotlin.utils.addIfNotNull
import java.io.File
import java.util.*
@@ -32,7 +32,7 @@ private fun addSingleModulePaths(target: Module, result: MutableList<String>) {
}
private fun getNodeJsClasspath(module: Module): List<String> {
if (module.isGradleModule()) return emptyList()
if (!module.shouldUseJpsOutput) return emptyList()
val result = ArrayList<String>()
ModuleRootManager.getInstance(module).orderEntries().recursively().forEachModule {
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.idea.js.jsOrJsImpl
import org.jetbrains.kotlin.idea.js.jsTestOutputFilePath
import org.jetbrains.kotlin.idea.nodejs.TestElementPath
import org.jetbrains.kotlin.idea.nodejs.getNodeJsEnvironmentVars
import org.jetbrains.kotlin.idea.run.addBuildTask
import org.jetbrains.kotlin.idea.util.projectStructure.module
class KotlinProtractorRunConfigurationProducer :
@@ -57,6 +58,7 @@ class KotlinProtractorRunConfigurationProducer :
envData = jsModule.getNodeJsEnvironmentVars()
)
configuration.name = configuration.suggestedName()
configuration.addBuildTask()
return true
}
}