Skip to content

Commit f1ddea0

Browse files
committed
feat(devins-golang): add support for Golang run configurations and test context provider #100
This commit introduces support for Kotlin run configurations and test context provider in
1 parent 068a9cf commit f1ddea0

File tree

3 files changed

+18
-3
lines changed

3 files changed

+18
-3
lines changed

goland/src/main/kotlin/cc/unitmesh/go/provider/testing/GoAutoTestService.kt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,34 @@ import cc.unitmesh.go.context.GoStructContextBuilder
88
import cc.unitmesh.go.util.GoPsiUtil
99
import com.goide.GoLanguage
1010
import com.goide.execution.testing.GoTestRunConfiguration
11+
import com.goide.execution.testing.frameworks.gotest.GotestFramework
1112
import com.goide.psi.*
13+
import com.intellij.execution.actions.ConfigurationContext
14+
import com.intellij.execution.configurations.RunConfiguration
1215
import com.intellij.execution.configurations.RunProfile
1316
import com.intellij.openapi.application.ReadAction
1417
import com.intellij.openapi.application.runReadAction
1518
import com.intellij.openapi.project.Project
1619
import com.intellij.openapi.roots.TestSourcesFilter
20+
import com.intellij.openapi.vfs.VirtualFile
1721
import com.intellij.psi.PsiElement
1822
import com.intellij.psi.PsiFile
23+
import com.intellij.psi.PsiManager
1924
import com.intellij.psi.util.PsiTreeUtil
2025
import com.intellij.testIntegration.TestFinderHelper
2126

2227
class GoAutoTestService : AutoTestService() {
2328
override fun isApplicable(element: PsiElement): Boolean = element.containingFile?.language == GoLanguage.INSTANCE
2429
override fun runConfigurationClass(project: Project): Class<out RunProfile> = GoTestRunConfiguration::class.java
30+
override fun lookupRelevantClass(project: Project, element: PsiElement): List<ClassContext> = listOf()
2531

26-
override fun lookupRelevantClass(project: Project, element: PsiElement): List<ClassContext> {
27-
return listOf()
32+
override fun createConfiguration(project: Project, virtualFile: VirtualFile): RunConfiguration? {
33+
val goFile = runReadAction { PsiManager.getInstance(project).findFile(virtualFile) as? GoFile } ?: return null
34+
35+
return ConfigurationContext(goFile).configurationsFromContext?.firstOrNull {
36+
val configuration = it.configuration as? GoTestRunConfiguration
37+
configuration?.testFramework is GotestFramework
38+
}?.configurationSettings?.configuration
2839
}
2940

3041
override fun findOrCreateTestFile(sourceFile: PsiFile, project: Project, element: PsiElement): TestFileContext? {

javascript/src/main/kotlin/cc/unitmesh/ide/javascript/provider/testing/JSAutoTestService.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ import com.intellij.openapi.diagnostic.logger
2424
import com.intellij.openapi.project.Project
2525
import com.intellij.openapi.vfs.LocalFileSystem
2626
import com.intellij.openapi.vfs.VfsUtil
27-
import com.intellij.psi.*
27+
import com.intellij.psi.PsiDirectory
28+
import com.intellij.psi.PsiElement
29+
import com.intellij.psi.PsiFile
30+
import com.intellij.psi.PsiManager
2831
import com.intellij.psi.util.PsiTreeUtil
2932
import java.io.File
3033
import java.nio.file.Path

src/main/kotlin/cc/unitmesh/devti/provider/AutoTestService.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ abstract class AutoTestService : LazyExtensionInstance<AutoTestService>(), RunSe
4444
* If a test file cannot be found or created, null is returned.
4545
*/
4646
abstract fun findOrCreateTestFile(sourceFile: PsiFile, project: Project, element: PsiElement): TestFileContext?
47+
4748
/**
4849
* Looks up the relevant classes in the project for the given element.
4950
*

0 commit comments

Comments
 (0)