Skip to content

Commit

Permalink
feat: add run after finish testing
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Jul 28, 2023
1 parent d634dfe commit 9ac7890
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 7 deletions.
Expand Up @@ -4,6 +4,11 @@ import cc.unitmesh.devti.context.FileContext
import cc.unitmesh.devti.context.FileContextProvider
import cc.unitmesh.devti.provider.TestFileContext
import cc.unitmesh.devti.provider.WriteTestService
import com.intellij.execution.Executor
import com.intellij.execution.ExecutorRegistryImpl
import com.intellij.execution.RunManager
import com.intellij.ide.actions.runAnything.RunAnythingPopupUI.getExecutor
import com.intellij.openapi.actionSystem.DataContext
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.runReadAction
import com.intellij.openapi.command.WriteCommandAction
Expand All @@ -16,6 +21,7 @@ import com.intellij.openapi.vfs.VirtualFile
import com.intellij.openapi.vfs.VirtualFileManager
import com.intellij.psi.*
import com.intellij.psi.impl.source.PsiClassReferenceType
import org.jetbrains.plugins.gradle.service.execution.GradleRunConfiguration
import java.io.File
import kotlin.jvm.internal.Ref

Expand Down Expand Up @@ -230,13 +236,37 @@ class JavaWriteTestService : WriteTestService() {
return testFileRef.element!!
}

fun runJunitTest(project: Project) {
// val projectTracker: AutoImportProjectTracker = AutoImportProjectTracker.getInstance(project)
// projectTracker.scheduleChangeProcessing()
// projectTracker.enableAutoReloadInTests()
// RunManager.getInstance(project).allConfigurationsList.forEach {
// filter in here and make runnable
// }
override fun runJunitTest(project: Project, virtualFile: VirtualFile) {
val runManager = RunManager.getInstance(project)
val allConfigurationsList = runManager.allConfigurationsList
log.warn(virtualFile.nameWithoutExtension)
val testConfig = allConfigurationsList.firstOrNull {
it.name == virtualFile.nameWithoutExtension && it is GradleRunConfiguration
}

if (testConfig == null) {
log.warn("Failed to find test configuration for: ${virtualFile.nameWithoutExtension}")
return
}

val configurationSettings =
runManager.findConfigurationByTypeAndName(testConfig.getType(), testConfig.name)

if (configurationSettings == null) {
log.warn("Failed to find test configuration for: ${virtualFile.nameWithoutExtension}")
return
}

log.info("configurationSettings: $configurationSettings")
runManager.selectedConfiguration = configurationSettings

val executor: Executor = getExecutor()
ExecutorRegistryImpl.RunnerHelper.run(
project,
testConfig,
configurationSettings,
DataContext.EMPTY_CONTEXT,
executor
)
}
}
Expand Up @@ -110,6 +110,8 @@ class TestCodeGenTask(

navigateTestFile(testContext.file, request.editor, request.project)

writeTestService.runJunitTest(request.project, testContext.file)

indicator.fraction = 1.0
}
}
Expand Down
Expand Up @@ -4,6 +4,7 @@ import cc.unitmesh.devti.context.FileContext
import com.intellij.openapi.extensions.ExtensionPointName
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.PsiClass
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiFile
import com.intellij.serviceContainer.LazyExtensionInstance
Expand Down Expand Up @@ -31,6 +32,7 @@ abstract class WriteTestService : LazyExtensionInstance<WriteTestService>() {
abstract fun lookupRelevantClass(project: Project, element: PsiElement): List<FileContext>
abstract fun insertTestCode(sourceFile: VirtualFile, project: Project, code: String): Boolean
abstract fun insertClassCode(sourceFile: VirtualFile, project: Project, code: String): Boolean
open fun runJunitTest(project: Project, virtualFile: VirtualFile) {}

companion object {
private val EP_NAME: ExtensionPointName<WriteTestService> =
Expand Down

0 comments on commit 9ac7890

Please sign in to comment.