|
| 1 | +package cc.unitmesh.scala.provider |
| 2 | + |
| 3 | +import cc.unitmesh.devti.context.ClassContext |
| 4 | +import cc.unitmesh.devti.provider.AutoTestService |
| 5 | +import cc.unitmesh.devti.provider.context.TestFileContext |
| 6 | +import com.intellij.execution.RunManager |
| 7 | +import com.intellij.execution.configurations.RunConfiguration |
| 8 | +import com.intellij.execution.configurations.RunProfile |
| 9 | +import com.intellij.openapi.module.ModuleUtilCore |
| 10 | +import com.intellij.openapi.project.Project |
| 11 | +import com.intellij.openapi.vfs.VirtualFile |
| 12 | +import com.intellij.psi.PsiElement |
| 13 | +import com.intellij.psi.PsiFile |
| 14 | +import com.intellij.psi.PsiManager |
| 15 | +import org.jetbrains.plugins.scala.lang.psi.api.ScalaFile |
| 16 | +import org.jetbrains.plugins.scala.lang.psi.api.ScalaPsiElement |
| 17 | +import org.jetbrains.plugins.scala.testingSupport.test.scalatest.ScalaTestConfigurationType |
| 18 | +import org.jetbrains.plugins.scala.testingSupport.test.scalatest.ScalaTestRunConfiguration |
| 19 | +import org.jetbrains.plugins.scala.testingSupport.test.testdata.AllInPackageTestData |
| 20 | + |
| 21 | +class ScalaTestService : AutoTestService() { |
| 22 | + override fun isApplicable(element: PsiElement): Boolean = element is ScalaPsiElement |
| 23 | + override fun runConfigurationClass(project: Project): Class<out RunProfile>? = ScalaTestRunConfiguration::class.java |
| 24 | + |
| 25 | + override fun createConfiguration(project: Project, virtualFile: VirtualFile): RunConfiguration? { |
| 26 | + val scalaFile = PsiManager.getInstance(project).findFile(virtualFile) as? ScalaFile ?: return null |
| 27 | + val settings = RunManager.getInstance(project).createConfiguration("Scala tests", ScalaTestConfigurationType().confFactory()) |
| 28 | + val configuration = settings.configuration as ScalaTestRunConfiguration |
| 29 | + val packageTestData = AllInPackageTestData(configuration) |
| 30 | + packageTestData.workingDirectory = scalaFile.project.basePath |
| 31 | + configuration.`testConfigurationData_$eq`(packageTestData) |
| 32 | + configuration.testKind = packageTestData.kind |
| 33 | + configuration.module = ModuleUtilCore.findModuleForPsiElement(scalaFile) |
| 34 | + |
| 35 | + return settings.configuration |
| 36 | + } |
| 37 | + |
| 38 | + override fun findOrCreateTestFile(sourceFile: PsiFile, project: Project, element: PsiElement): TestFileContext? { |
| 39 | + TODO("Not yet implemented") |
| 40 | + } |
| 41 | + |
| 42 | + override fun lookupRelevantClass(project: Project, element: PsiElement): List<ClassContext> { |
| 43 | + TODO("Not yet implemented") |
| 44 | + } |
| 45 | + |
| 46 | +} |
0 commit comments