diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/AskServerToGenerateBuildDir.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/AskServerToGenerateBuildDir.kt index cedfe679c..c07481303 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/AskServerToGenerateBuildDir.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/AskServerToGenerateBuildDir.kt @@ -1,20 +1,13 @@ package org.utbot.cpp.clion.plugin.actions -import com.intellij.notification.Notification -import com.intellij.notification.NotificationAction +import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent import org.utbot.cpp.clion.plugin.UTBot import org.utbot.cpp.clion.plugin.client.requests.CreateBuildDirRequest -class AskServerToGenerateBuildDir : NotificationAction(UTBot.message("projectConfigure.generate.buildDir")) { - override fun actionPerformed(e: AnActionEvent, n: Notification) { - actionPerformed(e) - } +class AskServerToGenerateBuildDir : AnAction(UTBot.message("projectConfigure.generate.buildDir")) { - // todo: add constructor that takes AnActionEvent to Request classes - override fun actionPerformed(e: AnActionEvent) { - CreateBuildDirRequest(e).execute() - } + override fun actionPerformed(e: AnActionEvent) = CreateBuildDirRequest(e).execute() override fun update(e: AnActionEvent) { e.presentation.isEnabledAndVisible = e.project != null diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/AskServerToGenerateJsonForProjectConfiguration.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/AskServerToGenerateJsonForProjectConfiguration.kt index 03422b4be..59dbe7815 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/AskServerToGenerateJsonForProjectConfiguration.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/AskServerToGenerateJsonForProjectConfiguration.kt @@ -1,20 +1,13 @@ package org.utbot.cpp.clion.plugin.actions -import com.intellij.notification.Notification -import com.intellij.notification.NotificationAction +import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent import org.utbot.cpp.clion.plugin.UTBot import org.utbot.cpp.clion.plugin.client.requests.GenerateJsonFilesRequest -class AskServerToGenerateJsonForProjectConfiguration : - NotificationAction(UTBot.message("projectConfigure.generate.json")) { - override fun actionPerformed(e: AnActionEvent, n: Notification) { - actionPerformed(e) - } +class AskServerToGenerateJsonForProjectConfiguration : AnAction(UTBot.message("projectConfigure.generate.json")) { - override fun actionPerformed(e: AnActionEvent) { - GenerateJsonFilesRequest(e).execute() - } + override fun actionPerformed(e: AnActionEvent) = GenerateJsonFilesRequest(e).execute() override fun update(e: AnActionEvent) { e.presentation.isEnabledAndVisible = e.project != null diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/ConfigureProjectAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/ConfigureProjectAction.kt deleted file mode 100644 index f6b529852..000000000 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/ConfigureProjectAction.kt +++ /dev/null @@ -1,21 +0,0 @@ -package org.utbot.cpp.clion.plugin.actions - -import com.intellij.notification.Notification -import com.intellij.notification.NotificationAction -import com.intellij.openapi.actionSystem.AnActionEvent -import org.utbot.cpp.clion.plugin.UTBot -import org.utbot.cpp.clion.plugin.client.requests.CheckProjectConfigurationRequest - -class ConfigureProjectAction : NotificationAction(UTBot.message("projectConfigure.configure")) { - override fun actionPerformed(e: AnActionEvent, n: Notification) { - actionPerformed(e) - } - - override fun actionPerformed(e: AnActionEvent) { - CheckProjectConfigurationRequest(e).execute() - } - - override fun update(e: AnActionEvent) { - e.presentation.isEnabledAndVisible = e.project != null - } -} diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/FocusAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/FocusAction.kt index a4b8f98fa..6de5517d3 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/FocusAction.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/FocusAction.kt @@ -1,23 +1,30 @@ package org.utbot.cpp.clion.plugin.actions -import com.intellij.notification.Notification -import com.intellij.notification.NotificationAction +import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.vfs.LocalFileSystem import com.intellij.psi.PsiManager +import org.utbot.cpp.clion.plugin.utils.activeProject import java.nio.file.Path -class FocusAction(val path: Path) : NotificationAction("Show") { +class FocusAction(val path: Path) : AnAction("Show") { + override fun actionPerformed(e: AnActionEvent) { - val virtualFile = LocalFileSystem.getInstance().findFileByNioFile(path) ?: return + val virtualFile = LocalFileSystem.getInstance().findFileByNioFile(path) + ?: error("Focus action should be disabled for path $path") + + val project = e.activeProject() + val projectInstance = PsiManager.getInstance(project) + + if (virtualFile.isDirectory) { - PsiManager.getInstance(e.project!!).findDirectory(virtualFile)?.navigate(true) + projectInstance.findDirectory(virtualFile)?.navigate(true) } else { - PsiManager.getInstance(e.project!!).findFile(virtualFile)?.navigate(true) + projectInstance.findFile(virtualFile)?.navigate(true) } } - override fun actionPerformed(e: AnActionEvent, notification: Notification) { - actionPerformed(e) + override fun update(e: AnActionEvent) { + e.presentation.isEnabledAndVisible = LocalFileSystem.getInstance().findFileByNioFile(path) != null } } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForClassAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForClassAction.kt deleted file mode 100644 index b51b7b9e7..000000000 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForClassAction.kt +++ /dev/null @@ -1,23 +0,0 @@ -package org.utbot.cpp.clion.plugin.actions - -import com.intellij.openapi.actionSystem.AnActionEvent -import com.intellij.openapi.actionSystem.CommonDataKeys -import org.utbot.cpp.clion.plugin.grpc.getClassGrpcRequest -import org.utbot.cpp.clion.plugin.client.requests.ClassRequest -import org.utbot.cpp.clion.plugin.utils.isCPPFileName - -class GenerateForClassAction : GenerateTestsBaseAction() { - override fun actionPerformed(e: AnActionEvent) { - ClassRequest( - getClassGrpcRequest(e), - e.project!!, - ).execute() - } - - override fun updateIfServerAvailable(e: AnActionEvent) { - e.presentation.isEnabledAndVisible = e.project != null && - e.getData(CommonDataKeys.EDITOR) != null && - e.getData(CommonDataKeys.VIRTUAL_FILE) != null && - isCPPFileName(e.getRequiredData(CommonDataKeys.VIRTUAL_FILE).name) - } -} diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForFolderAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForFolderAction.kt deleted file mode 100644 index 83ce31567..000000000 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForFolderAction.kt +++ /dev/null @@ -1,23 +0,0 @@ -package org.utbot.cpp.clion.plugin.actions - -import com.intellij.openapi.actionSystem.AnActionEvent -import com.intellij.openapi.actionSystem.CommonDataKeys -import org.utbot.cpp.clion.plugin.grpc.getFolderGrpcRequest -import org.utbot.cpp.clion.plugin.client.requests.FolderRequest - -class GenerateForFolderAction : GenerateTestsBaseAction() { - override fun actionPerformed(e: AnActionEvent) { - FolderRequest( - getFolderGrpcRequest(e), - e.project!! - ).execute() - } - - override fun updateIfServerAvailable(e: AnActionEvent) { - if (e.project == null) { - e.presentation.isEnabledAndVisible = false - return - } - e.presentation.isEnabledAndVisible = e.getData(CommonDataKeys.VIRTUAL_FILE)?.isDirectory ?: false - } -} diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForFunctionAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForFunctionAction.kt deleted file mode 100644 index bfd996411..000000000 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForFunctionAction.kt +++ /dev/null @@ -1,20 +0,0 @@ -package org.utbot.cpp.clion.plugin.actions - -import com.intellij.openapi.actionSystem.AnActionEvent -import com.intellij.openapi.actionSystem.CommonDataKeys -import org.utbot.cpp.clion.plugin.grpc.getFunctionGrpcRequest -import org.utbot.cpp.clion.plugin.client.requests.FunctionRequest - -class GenerateForFunctionAction : GenerateTestsBaseAction() { - override fun updateIfServerAvailable(e: AnActionEvent) { - e.presentation.isEnabledAndVisible = - e.project != null && e.getData(CommonDataKeys.EDITOR) != null && e.getData(CommonDataKeys.VIRTUAL_FILE) != null - } - - override fun actionPerformed(e: AnActionEvent) { - FunctionRequest( - getFunctionGrpcRequest(e), - e.project!! - ).execute() - } -} diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateTestsBaseAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateTestsBaseAction.kt deleted file mode 100644 index 5bb676630..000000000 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateTestsBaseAction.kt +++ /dev/null @@ -1,17 +0,0 @@ -package org.utbot.cpp.clion.plugin.actions - -import com.intellij.openapi.actionSystem.AnAction -import com.intellij.openapi.actionSystem.AnActionEvent -import org.utbot.cpp.clion.plugin.utils.client - -abstract class GenerateTestsBaseAction : AnAction() { - override fun update(e: AnActionEvent) { - if (e.client.isServerAvailable()) { - updateIfServerAvailable(e) - } else { - e.presentation.isEnabled = false - } - } - - abstract fun updateIfServerAvailable(e: AnActionEvent) -} diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/ShowWizardAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/ShowWizardAction.kt index 17ccbc7c1..7786250f5 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/ShowWizardAction.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/ShowWizardAction.kt @@ -1,18 +1,15 @@ package org.utbot.cpp.clion.plugin.actions -import com.intellij.notification.Notification -import com.intellij.notification.NotificationAction +import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent import org.utbot.cpp.clion.plugin.UTBot import org.utbot.cpp.clion.plugin.ui.wizard.UTBotWizard +import org.utbot.cpp.clion.plugin.utils.activeProject -class ShowWizardAction: NotificationAction(UTBot.message("wizard.show")) { - override fun actionPerformed(e: AnActionEvent, notification: Notification) { - actionPerformed(e) - } +class ShowWizardAction: AnAction(UTBot.message("wizard.show")) { override fun actionPerformed(e: AnActionEvent) { - UTBotWizard(e.project ?: return).showAndGet() + UTBotWizard(e.activeProject()).showAndGet() } override fun update(e: AnActionEvent) { diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/UnmarkSourceFolderAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/UnmarkSourceFolderAction.kt deleted file mode 100644 index 496c8a5ed..000000000 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/UnmarkSourceFolderAction.kt +++ /dev/null @@ -1,16 +0,0 @@ -package org.utbot.cpp.clion.plugin.actions - -import com.intellij.openapi.actionSystem.AnAction -import com.intellij.openapi.actionSystem.AnActionEvent -import org.utbot.cpp.clion.plugin.ui.sourceFoldersView.ProxyProjectViewTree - -class UnmarkSourceFolderAction: AnAction() { - override fun actionPerformed(e: AnActionEvent) { - val update = e.getData(ProxyProjectViewTree.UTBOT_DIRS)!! - update.unmarkAsSource() - } - - override fun update(e: AnActionEvent) { - e.presentation.isEnabledAndVisible = e.getData(ProxyProjectViewTree.UTBOT_DIRS) != null - } -} diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/configure/ConfigureProjectAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/configure/ConfigureProjectAction.kt new file mode 100644 index 000000000..cd531207c --- /dev/null +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/configure/ConfigureProjectAction.kt @@ -0,0 +1,16 @@ +package org.utbot.cpp.clion.plugin.actions.configure + +import com.intellij.openapi.actionSystem.AnAction +import com.intellij.openapi.actionSystem.AnActionEvent +import org.utbot.cpp.clion.plugin.UTBot +import org.utbot.cpp.clion.plugin.client.requests.CheckProjectConfigurationRequest +import org.utbot.cpp.clion.plugin.utils.activeProject + +class ConfigureProjectAction : AnAction(UTBot.message("projectConfigure.configure")) { + + override fun actionPerformed(e: AnActionEvent) = CheckProjectConfigurationRequest(e.activeProject()).execute() + + override fun update(e: AnActionEvent) { + e.presentation.isEnabledAndVisible = e.project != null + } +} diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/ReconfigureProjectAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/configure/ReconfigureProjectAction.kt similarity index 52% rename from clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/ReconfigureProjectAction.kt rename to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/configure/ReconfigureProjectAction.kt index 1c573399a..eab689fc0 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/ReconfigureProjectAction.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/configure/ReconfigureProjectAction.kt @@ -1,22 +1,20 @@ -package org.utbot.cpp.clion.plugin.actions +package org.utbot.cpp.clion.plugin.actions.configure -import com.intellij.notification.Notification -import com.intellij.notification.NotificationAction +import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent import org.utbot.cpp.clion.plugin.UTBot import org.utbot.cpp.clion.plugin.grpc.getProjectConfigGrpcRequest import org.utbot.cpp.clion.plugin.client.requests.CheckProjectConfigurationRequest +import org.utbot.cpp.clion.plugin.utils.activeProject import testsgen.Testgen -class ReconfigureProjectAction: NotificationAction(UTBot.message("projectConfigure.reconfigure")) { - override fun actionPerformed(e: AnActionEvent, notification: Notification) { - actionPerformed(e) - } +class ReconfigureProjectAction: AnAction(UTBot.message("projectConfigure.reconfigure")) { override fun actionPerformed(e: AnActionEvent) { + val project = e.activeProject() CheckProjectConfigurationRequest( - e.project!!, - getProjectConfigGrpcRequest(e.project!!, Testgen.ConfigMode.ALL), + getProjectConfigGrpcRequest(project, Testgen.ConfigMode.ALL), + project, ).execute() } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/BaseGenerateTestsAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/BaseGenerateTestsAction.kt new file mode 100644 index 000000000..8a19241f3 --- /dev/null +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/BaseGenerateTestsAction.kt @@ -0,0 +1,22 @@ +package org.utbot.cpp.clion.plugin.actions.generate + +import com.intellij.openapi.actionSystem.AnAction +import com.intellij.openapi.actionSystem.AnActionEvent +import org.utbot.cpp.clion.plugin.utils.client + +abstract class BaseGenerateTestsAction : AnAction() { + + override fun update(e: AnActionEvent) { + val isDefined: Boolean = isDefined(e) + + e.presentation.isVisible = isDefined + e.presentation.isEnabled = isDefined && e.client.isServerAvailable() + } + + /** + * Checks if an action can really be called for event [e]. + * For example, editor must be initialized for all actions, related to + * specific lines, and must not for related to whole project. + */ + abstract fun isDefined(e: AnActionEvent): Boolean +} diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForAssertionAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForAssertionAction.kt similarity index 56% rename from clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForAssertionAction.kt rename to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForAssertionAction.kt index 2e3f0fff7..562b30485 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForAssertionAction.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForAssertionAction.kt @@ -1,22 +1,23 @@ -package org.utbot.cpp.clion.plugin.actions +package org.utbot.cpp.clion.plugin.actions.generate import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.CommonDataKeys -import org.utbot.cpp.clion.plugin.grpc.getAssertionGrpcRequest import org.utbot.cpp.clion.plugin.client.requests.AssertionRequest +import org.utbot.cpp.clion.plugin.grpc.getAssertionGrpcRequest +import org.utbot.cpp.clion.plugin.utils.activeProject -class GenerateForAssertionAction : GenerateTestsBaseAction() { - override fun actionPerformed(e: AnActionEvent) { +class GenerateForAssertionAction : BaseGenerateTestsAction() { + override fun actionPerformed(e: AnActionEvent) = AssertionRequest( getAssertionGrpcRequest(e), - e.project!!, + e.activeProject(), ).execute() - } - override fun updateIfServerAvailable(e: AnActionEvent) { + override fun isDefined(e: AnActionEvent): Boolean { val project = e.project val editor = e.getData(CommonDataKeys.EDITOR) val file = e.getData(CommonDataKeys.VIRTUAL_FILE) - e.presentation.isEnabledAndVisible = (project != null) && (editor != null) && (file != null) + + return project != null && editor != null && file != null } } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForClassAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForClassAction.kt new file mode 100644 index 000000000..ffe951746 --- /dev/null +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForClassAction.kt @@ -0,0 +1,24 @@ +package org.utbot.cpp.clion.plugin.actions.generate + +import com.intellij.openapi.actionSystem.AnActionEvent +import com.intellij.openapi.actionSystem.CommonDataKeys +import org.utbot.cpp.clion.plugin.client.requests.ClassRequest +import org.utbot.cpp.clion.plugin.grpc.getClassGrpcRequest +import org.utbot.cpp.clion.plugin.utils.activeProject +import org.utbot.cpp.clion.plugin.utils.isCPPFileName + +class GenerateForClassAction : BaseGenerateTestsAction() { + override fun actionPerformed(e: AnActionEvent) = + ClassRequest( + getClassGrpcRequest(e), + e.activeProject(), + ).execute() + + override fun isDefined(e: AnActionEvent): Boolean { + val project = e.project + val editor = e.getData(CommonDataKeys.EDITOR) + val file = e.getData(CommonDataKeys.VIRTUAL_FILE) + + return project != null && editor != null && file != null && isCPPFileName(file.name) + } +} diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForFileAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForFileAction.kt similarity index 50% rename from clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForFileAction.kt rename to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForFileAction.kt index a4c7aaab6..eddc7ff01 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForFileAction.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForFileAction.kt @@ -1,19 +1,22 @@ -package org.utbot.cpp.clion.plugin.actions +package org.utbot.cpp.clion.plugin.actions.generate import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.CommonDataKeys -import org.utbot.cpp.clion.plugin.grpc.getFileGrpcRequest import org.utbot.cpp.clion.plugin.client.requests.FileRequest +import org.utbot.cpp.clion.plugin.grpc.getFileGrpcRequest +import org.utbot.cpp.clion.plugin.utils.activeProject import org.utbot.cpp.clion.plugin.utils.isCPPorCFileName -class GenerateForFileAction : GenerateTestsBaseAction() { - override fun actionPerformed(e: AnActionEvent) { - FileRequest(getFileGrpcRequest(e), e.project!!).execute() - } +class GenerateForFileAction : BaseGenerateTestsAction() { + override fun actionPerformed(e: AnActionEvent) = + FileRequest( + getFileGrpcRequest(e), + e.activeProject(), + ).execute() // action is available only if the selected file ends in .cpp, .hpp, .c or .h - override fun updateIfServerAvailable(e: AnActionEvent) { + override fun isDefined(e: AnActionEvent): Boolean { val file = e.getData(CommonDataKeys.PSI_FILE) - e.presentation.isEnabledAndVisible = isCPPorCFileName(file?.name ?: "") + return isCPPorCFileName(file?.name ?: "") } } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForFolderAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForFolderAction.kt new file mode 100644 index 000000000..0ef4121fe --- /dev/null +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForFolderAction.kt @@ -0,0 +1,22 @@ +package org.utbot.cpp.clion.plugin.actions.generate + +import com.intellij.openapi.actionSystem.AnActionEvent +import com.intellij.openapi.actionSystem.CommonDataKeys +import org.utbot.cpp.clion.plugin.client.requests.FolderRequest +import org.utbot.cpp.clion.plugin.grpc.getFolderGrpcRequest +import org.utbot.cpp.clion.plugin.utils.activeProject + +class GenerateForFolderAction : BaseGenerateTestsAction() { + override fun actionPerformed(e: AnActionEvent) = + FolderRequest( + getFolderGrpcRequest(e), + e.activeProject() + ).execute() + + override fun isDefined(e: AnActionEvent): Boolean { + val project = e.project + val file = e.getData(CommonDataKeys.VIRTUAL_FILE) + + return project != null && file?.isDirectory == true + } +} diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForFunctionAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForFunctionAction.kt new file mode 100644 index 000000000..3012626d3 --- /dev/null +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForFunctionAction.kt @@ -0,0 +1,24 @@ +package org.utbot.cpp.clion.plugin.actions.generate + +import com.intellij.openapi.actionSystem.AnActionEvent +import com.intellij.openapi.actionSystem.CommonDataKeys +import org.utbot.cpp.clion.plugin.client.requests.FunctionRequest +import org.utbot.cpp.clion.plugin.grpc.getFunctionGrpcRequest +import org.utbot.cpp.clion.plugin.utils.activeProject + +class GenerateForFunctionAction : BaseGenerateTestsAction() { + + override fun actionPerformed(e: AnActionEvent) = + FunctionRequest( + getFunctionGrpcRequest(e), + e.activeProject() + ).execute() + + override fun isDefined(e: AnActionEvent): Boolean { + val project = e.project + val editor = e.getData(CommonDataKeys.EDITOR) + val file = e.getData(CommonDataKeys.VIRTUAL_FILE) + + return project != null && editor != null && file != null + } +} diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForLineAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForLineAction.kt similarity index 55% rename from clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForLineAction.kt rename to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForLineAction.kt index 16962c149..52858f792 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForLineAction.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForLineAction.kt @@ -1,22 +1,23 @@ -package org.utbot.cpp.clion.plugin.actions +package org.utbot.cpp.clion.plugin.actions.generate import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.CommonDataKeys -import org.utbot.cpp.clion.plugin.grpc.getLineGrpcRequest import org.utbot.cpp.clion.plugin.client.requests.LineRequest +import org.utbot.cpp.clion.plugin.grpc.getLineGrpcRequest +import org.utbot.cpp.clion.plugin.utils.activeProject + +class GenerateForLineAction : BaseGenerateTestsAction() { + override fun actionPerformed(e: AnActionEvent) = + LineRequest( + getLineGrpcRequest(e), + e.activeProject(), + ).execute() -class GenerateForLineAction : GenerateTestsBaseAction() { - override fun updateIfServerAvailable(e: AnActionEvent) { + override fun isDefined(e: AnActionEvent): Boolean { val project = e.project val editor = e.getData(CommonDataKeys.EDITOR) val file = e.getData(CommonDataKeys.VIRTUAL_FILE) - e.presentation.isEnabledAndVisible = (project != null) && (editor != null) && (file != null) - } - override fun actionPerformed(e: AnActionEvent) { - LineRequest( - getLineGrpcRequest(e), - e.project!! - ).execute() + return project != null && editor != null && file != null } } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForPredicateAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForPredicateAction.kt similarity index 65% rename from clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForPredicateAction.kt rename to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForPredicateAction.kt index 9f3459f06..627dbe723 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForPredicateAction.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForPredicateAction.kt @@ -1,4 +1,4 @@ -package org.utbot.cpp.clion.plugin.actions +package org.utbot.cpp.clion.plugin.actions.generate import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.ui.ComponentValidator @@ -13,6 +13,7 @@ import org.utbot.cpp.clion.plugin.grpc.getFunctionGrpcRequest import org.utbot.cpp.clion.plugin.grpc.getPredicateGrpcRequest import org.utbot.cpp.clion.plugin.client.requests.FunctionReturnTypeRequest import org.utbot.cpp.clion.plugin.client.requests.PredicateRequest +import org.utbot.cpp.clion.plugin.utils.activeProject import org.utbot.cpp.clion.plugin.utils.client import testsgen.Util.ValidationType import java.awt.Dimension @@ -21,13 +22,67 @@ import java.awt.event.KeyEvent import java.math.BigInteger import java.util.function.Supplier -class GenerateForPredicateAction : GenerateTestsBaseAction() { - override fun updateIfServerAvailable(e: AnActionEvent) { - e.presentation.isEnabledAndVisible = (e.project != null) +class GenerateForPredicateAction : BaseGenerateTestsAction() { + + override fun actionPerformed(e: AnActionEvent) { + fun sendPredicateToServer(validationType: ValidationType, valueToCompare: String, comparisonOperator: String) = + PredicateRequest( + getPredicateGrpcRequest(e, comparisonOperator, validationType, valueToCompare), + e.activeProject() + ).apply { + e.client.executeRequest(this) + } + + //TODO: this code requires some comments + fun chooseComparisonOperator( + validationType: ValidationType, + proceedWithComparisonOperator: (comparisonOperator: String) -> Unit, + ) { + when (validationType) { + ValidationType.STRING, + ValidationType.BOOL -> { + proceedWithComparisonOperator("==") + return + } + else -> { + val operators = listOf("==", "<=", "=>", "<", ">") + createListPopup("Select predicate", operators) { comparisonOperator -> + proceedWithComparisonOperator(comparisonOperator) + }.showInBestPositionFor(e.dataContext) + } + } + } + + fun chooseReturnValue( + validationType: ValidationType, + proceedWithValueToCompare: (valueToCompare: String) -> Unit, + ) { + val popup = when (validationType) { + ValidationType.BOOL -> createTrueFalsePopup { returnValue -> proceedWithValueToCompare(returnValue) } + else -> createTextFieldPopup(validationType) { returnValue -> proceedWithValueToCompare(returnValue) } + } + popup.showInBestPositionFor(e.dataContext) + } + + FunctionReturnTypeRequest( + getFunctionGrpcRequest(e), + e.activeProject(), + ) { functionReturnType -> + val validationType = functionReturnType.validationType + chooseComparisonOperator(validationType) { comparisonOperator -> + chooseReturnValue(validationType) { valueToCompare -> + sendPredicateToServer(validationType, valueToCompare, comparisonOperator) + } + } + }.apply { + e.client.executeRequest(this) + } } - fun createListPopup(title: String, list: List, onChoose: (String) -> Unit): JBPopup { - return JBPopupFactory.getInstance().createPopupChooserBuilder(list) + override fun isDefined(e: AnActionEvent): Boolean = e.project != null + + private fun createListPopup(title: String, items: List, onChoose: (String) -> Unit): JBPopup { + return JBPopupFactory.getInstance().createPopupChooserBuilder(items) .setResizable(false) .setMovable(false) .setTitle(title) @@ -37,14 +92,15 @@ class GenerateForPredicateAction : GenerateTestsBaseAction() { .createPopup() } - fun createTrueFalsePopup(onChoose: (String) -> Unit) = createListPopup("Select bool value", - listOf("true", "false")) { onChoose(it) } + private fun createTrueFalsePopup(onChoose: (String) -> Unit) = + createListPopup("Select bool value", listOf("true", "false")) { onChoose(it) } - fun createTextFieldPopup(type: ValidationType, onChoose: (String) -> Unit): JBPopup { + private fun createTextFieldPopup(type: ValidationType, onChoose: (String) -> Unit): JBPopup { val textField = ExtendableTextField() textField.minimumSize = Dimension(100, textField.width) textField.text = defaultReturnValues[type] textField.selectAll() + val popup = JBPopupFactory.getInstance().createComponentPopupBuilder(textField, null) .setFocusable(true) .setRequestFocus(true) @@ -54,12 +110,12 @@ class GenerateForPredicateAction : GenerateTestsBaseAction() { var canClosePopup = true ComponentValidator(popup).withValidator(Supplier { val validationResult = returnValueValidators[type]?.let { it(textField.text) } - if (validationResult == null) { + if (validationResult is ValidationResult.Failure) { + canClosePopup = false + ValidationInfo(validationResult.message, textField) + } else { canClosePopup = true null - } else { - canClosePopup = false - ValidationInfo(validationResult, textField) } }).installOn(textField) @@ -85,57 +141,8 @@ class GenerateForPredicateAction : GenerateTestsBaseAction() { return popup } - override fun actionPerformed(e: AnActionEvent) { - - fun sendPredicateToServer(validationType: ValidationType, valueToCompare: String, comparisonOperator: String) { - val predicateRequest = getPredicateGrpcRequest(e, comparisonOperator, validationType, valueToCompare) - PredicateRequest( - predicateRequest, - e.project!! - ).apply { - e.client.executeRequest(this) - } - } - - fun chooseComparisonOperator(type: ValidationType, proceedWithComparisonOperator: (comparisonOperator: String) -> Unit) { - when (type) { - ValidationType.STRING, ValidationType.BOOL -> { - proceedWithComparisonOperator("==") - return - } - else -> { - createListPopup("Select Predicate", listOf("==", "<=", "=>", "<", ">")) { comparisonOperator -> - proceedWithComparisonOperator(comparisonOperator) - }.showInBestPositionFor(e.dataContext) - } - } - } - - fun chooseReturnValue(type: ValidationType, proceedWithValueToCompare: (valueToCompare: String) -> Unit) { - val popup = if (type == ValidationType.BOOL) { - createTrueFalsePopup { returnValue -> proceedWithValueToCompare(returnValue) } - } else { - createTextFieldPopup(type) { returnValue -> proceedWithValueToCompare(returnValue) } - } - popup.showInBestPositionFor(e.dataContext) - } - - FunctionReturnTypeRequest( - e.project!!, - getFunctionGrpcRequest(e) - ) { functionReturnType -> - val type = functionReturnType.validationType - chooseComparisonOperator(type) { comparisonOperator -> - chooseReturnValue(type) { valueToCompare -> - sendPredicateToServer(type, valueToCompare, comparisonOperator) - } - } - }.apply { - e.client.executeRequest(this) - } - } - companion object { + //TODO: why don't we have DOUBLE and BYTE here? val defaultReturnValues = mapOf( ValidationType.INT8_T to "0", ValidationType.INT16_T to "0", @@ -190,69 +197,54 @@ class GenerateForPredicateAction : GenerateTestsBaseAction() { ValidationType.UINT64_T to intBoundsBySize(64, true) ) - private fun intValidationFunc(validationType: ValidationType): (String) -> String? { - return fun(value: String): String? { - return if ("""^-?(([1-9][0-9]*)|0)$""".toRegex().matches(value)) { - if (isIntegerInBounds( - value, - integerBounds[validationType]?.first, - integerBounds[validationType]?.second - ) - ) { - null - } else { - "Value does not fit into C ${validationTypeName[validationType]} type" - } + sealed class ValidationResult { + object Success : ValidationResult() + data class Failure(val message: String) : ValidationResult() + } + + private fun intValidationFunc(validationType: ValidationType): (String) -> ValidationResult = + fun(value: String): ValidationResult = if ("""^-?(([1-9][0-9]*)|0)$""".toRegex().matches(value)) { + if (isIntegerInBounds( + value, + integerBounds[validationType]?.first, + integerBounds[validationType]?.second + ) + ) { + ValidationResult.Success } else { - "Value is not an integer" + ValidationResult.Failure("Value does not fit into C ${validationTypeName[validationType]} type") } + } else { + ValidationResult.Failure("Value is not an integer") } - } - private fun validateChar(value: String): String? { - if (value.length == 1) { - return null + private fun validateChar(value: String): ValidationResult { + val escapeSequence = listOf("\\\'", "\"", "\\?", "\\\\", "\\a", "\\b", "\\f", "\\n", "\\r", "\\t", "\\v") + return if (value.length == 1 || escapeSequence.contains(value)) { + ValidationResult.Success } else { - val escapeSequences = listOf( - "\\\'", - "\"", - "\\?", - "\\\\", - "\\a", - "\\b", - "\\f", - "\\n", - "\\r", - "\\t", - "\\v" - ) - return if (!escapeSequences.contains(value)) { - "Value is not a character" - } else { - null - } + ValidationResult.Failure("Value is not a character") } } - private fun validateFloat(value: String): String? { + private fun validateFloat(value: String): ValidationResult { return if ("""^-?([1-9][0-9]*)[.]([0-9]*)$""".toRegex().matches(value)) { if (value.length < 15) { - null + ValidationResult.Success } else { - "Value does not fit into C float type." + ValidationResult.Failure("Value does not fit into C float type") } } else { - "Value is not floating-point" + ValidationResult.Failure("Value is not floating-point") } } - private fun validateString(value: String): String? { - return if (value.length > 32) { - "String is too long" + private fun validateString(value: String): ValidationResult = + if (value.length > 32) { + ValidationResult.Failure("String is too long") } else { - null + ValidationResult.Success } - } val returnValueValidators = mapOf( ValidationType.INT8_T to intValidationFunc(ValidationType.INT8_T), diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForProjectAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForProjectAction.kt similarity index 60% rename from clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForProjectAction.kt rename to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForProjectAction.kt index e2ecc3e2d..0eddf2006 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForProjectAction.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForProjectAction.kt @@ -1,21 +1,20 @@ -package org.utbot.cpp.clion.plugin.actions +package org.utbot.cpp.clion.plugin.actions.generate import com.intellij.openapi.actionSystem.AnActionEvent import org.utbot.cpp.clion.plugin.grpc.getProjectGrpcRequest import org.utbot.cpp.clion.plugin.client.requests.ProjectRequest +import org.utbot.cpp.clion.plugin.utils.activeProject import org.utbot.cpp.clion.plugin.utils.client -class GenerateForProjectAction : GenerateTestsBaseAction() { - override fun updateIfServerAvailable(e: AnActionEvent) { - e.presentation.isEnabled = (e.project != null) - } - +class GenerateForProjectAction : BaseGenerateTestsAction() { override fun actionPerformed(e: AnActionEvent) { ProjectRequest( getProjectGrpcRequest(e), - e.project!! + e.activeProject(), ).apply { e.client.executeRequest(this) } } + + override fun isDefined(e: AnActionEvent): Boolean = e.project != null } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForSnippetAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForSnippetAction.kt similarity index 61% rename from clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForSnippetAction.kt rename to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForSnippetAction.kt index b570c2bb0..84e90cd0d 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForSnippetAction.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForSnippetAction.kt @@ -1,20 +1,21 @@ -package org.utbot.cpp.clion.plugin.actions +package org.utbot.cpp.clion.plugin.actions.generate import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.CommonDataKeys -import org.utbot.cpp.clion.plugin.grpc.getSnippetGrpcRequest import org.utbot.cpp.clion.plugin.client.requests.SnippetRequest +import org.utbot.cpp.clion.plugin.grpc.getSnippetGrpcRequest +import org.utbot.cpp.clion.plugin.utils.activeProject -class GenerateForSnippetAction : GenerateTestsBaseAction() { +class GenerateForSnippetAction : BaseGenerateTestsAction() { override fun actionPerformed(e: AnActionEvent) { SnippetRequest( getSnippetGrpcRequest(e), - e.project!! + e.activeProject(), ).execute() } - override fun updateIfServerAvailable(e: AnActionEvent) { + override fun isDefined(e: AnActionEvent): Boolean { val file = e.getData(CommonDataKeys.VIRTUAL_FILE) - e.presentation.isEnabledAndVisible = file != null + return file != null } } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/RunWithCoverageAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/RunWithCoverageAction.kt similarity index 54% rename from clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/RunWithCoverageAction.kt rename to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/RunWithCoverageAction.kt index c1dfbb38d..a43f28813 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/RunWithCoverageAction.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/RunWithCoverageAction.kt @@ -1,35 +1,37 @@ -package org.utbot.cpp.clion.plugin.actions +package org.utbot.cpp.clion.plugin.actions.generate import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.CommonDataKeys import com.intellij.openapi.diagnostic.Logger import com.intellij.psi.PsiElement -import org.utbot.cpp.clion.plugin.grpc.getCoverageAndResultsGrpcRequest import org.utbot.cpp.clion.plugin.client.requests.RunWithCoverageRequest -import org.utbot.cpp.clion.plugin.grpc.activeProject +import org.utbot.cpp.clion.plugin.grpc.getCoverageAndResultsGrpcRequest import org.utbot.cpp.clion.plugin.ui.testsResults.TestNameAndTestSuite +import org.utbot.cpp.clion.plugin.utils.activeProject -class RunWithCoverageAction(val element: PsiElement) : GenerateTestsBaseAction() { +class RunWithCoverageAction(val element: PsiElement) : BaseGenerateTestsAction() { override fun actionPerformed(e: AnActionEvent) { - log.debug("Action RunWithCoverageAction was called") - if (element.containingFile == null) - return - log.debug("psi element is valid: containing file not null") + logger.debug("Action RunWithCoverageAction was called") + val testArgs = TestNameAndTestSuite.getFromPsiElement(element) val suiteName = testArgs.suite val testedMethodName = testArgs.name val filePath = e.getRequiredData(CommonDataKeys.VIRTUAL_FILE).path - val request = getCoverageAndResultsGrpcRequest(e.activeProject(), filePath, suiteName, testedMethodName) + val project = e.activeProject() + RunWithCoverageRequest( - e.project!!, - request + getCoverageAndResultsGrpcRequest(project, filePath, suiteName, testedMethodName), + project, ).execute() } - override fun updateIfServerAvailable(e: AnActionEvent) {} + override fun isDefined(e: AnActionEvent): Boolean { + val file = e.getData(CommonDataKeys.PSI_FILE) + return file != null + } companion object { - private val log = Logger.getInstance(this::class.java) + private val logger = Logger.getInstance(this::class.java) } } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/MarkSourceFolderAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/mark/BaseSourceFolderAction.kt similarity index 57% rename from clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/MarkSourceFolderAction.kt rename to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/mark/BaseSourceFolderAction.kt index 298f22d9f..f1b1f0c99 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/MarkSourceFolderAction.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/mark/BaseSourceFolderAction.kt @@ -1,16 +1,12 @@ -package org.utbot.cpp.clion.plugin.actions +package org.utbot.cpp.clion.plugin.actions.mark import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent import org.utbot.cpp.clion.plugin.ui.sourceFoldersView.ProxyProjectViewTree -class MarkSourceFolderAction: AnAction() { - override fun actionPerformed(e: AnActionEvent) { - val update = e.getData(ProxyProjectViewTree.UTBOT_DIRS)!! - update.markAsSource() - } +abstract class BaseSourceFolderAction: AnAction() { override fun update(e: AnActionEvent) { e.presentation.isEnabledAndVisible = e.getData(ProxyProjectViewTree.UTBOT_DIRS) != null } -} +} \ No newline at end of file diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/mark/MarkSourceFolderAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/mark/MarkSourceFolderAction.kt new file mode 100644 index 000000000..e292b7859 --- /dev/null +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/mark/MarkSourceFolderAction.kt @@ -0,0 +1,13 @@ +package org.utbot.cpp.clion.plugin.actions.mark + +import com.intellij.openapi.actionSystem.AnActionEvent +import org.utbot.cpp.clion.plugin.ui.sourceFoldersView.ProxyProjectViewTree + +class MarkSourceFolderAction: BaseSourceFolderAction() { + override fun actionPerformed(e: AnActionEvent) { + val directoryUpdater = e.getData(ProxyProjectViewTree.UTBOT_DIRS) + ?: error("MarkSourceFolderAction should be disabled for event $e") + + directoryUpdater.markAsSource() + } +} diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/mark/UnmarkSourceFolderAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/mark/UnmarkSourceFolderAction.kt new file mode 100644 index 000000000..f1adb625d --- /dev/null +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/mark/UnmarkSourceFolderAction.kt @@ -0,0 +1,14 @@ +package org.utbot.cpp.clion.plugin.actions.mark + +import com.intellij.openapi.actionSystem.AnActionEvent +import org.utbot.cpp.clion.plugin.ui.sourceFoldersView.ProxyProjectViewTree + +class UnmarkSourceFolderAction: BaseSourceFolderAction() { + + override fun actionPerformed(e: AnActionEvent) { + val directoryUpdater = e.getData(ProxyProjectViewTree.UTBOT_DIRS) + ?: error("UnmarkSourceFolderAction should be disabled for event $e") + + directoryUpdater.unmarkAsSource() + } +} diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/AssertionRequest.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/AssertionRequest.kt index f15234c6d..0f1ea7fdb 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/AssertionRequest.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/AssertionRequest.kt @@ -5,14 +5,16 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.flow.Flow import org.utbot.cpp.clion.plugin.UTBot import testsgen.Testgen -import testsgen.TestsGenServiceGrpcKt +import testsgen.TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub class AssertionRequest( request: Testgen.AssertionRequest, project: Project, ) : BaseTestsRequest(request, project, UTBot.message("requests.assertion.description.progress")) { - override val logMessage: String = "Sending request to generate tests for ASSERTION." - override fun getInfoMessage(): String = "Assertion tests generated!" - override suspend fun TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow = + + override val logMessage: String = "Sending request to generate tests for Assertion" + override fun getInfoMessage(): String = "Tests for assertion are generated!" + + override suspend fun TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow = generateAssertionFailTests(request) } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/CheckProjectConfigurationRequest.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/CheckProjectConfigurationRequest.kt index e6df00a5b..4f70412c3 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/CheckProjectConfigurationRequest.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/CheckProjectConfigurationRequest.kt @@ -1,6 +1,5 @@ package org.utbot.cpp.clion.plugin.client.requests -import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.project.Project import kotlinx.coroutines.Job import kotlinx.coroutines.flow.Flow @@ -11,13 +10,12 @@ import testsgen.Testgen import testsgen.TestsGenServiceGrpcKt class CheckProjectConfigurationRequest( - project: Project, request: Testgen.ProjectConfigRequest, + project: Project, ): BaseRequest>(request, project) { override val logMessage: String = "Sending request to check project configuration." - constructor(project: Project): this(project, getProjectConfigGrpcRequest(project, Testgen.ConfigMode.CHECK)) - constructor(e: AnActionEvent): this(e.project!!) + constructor(project: Project): this(getProjectConfigGrpcRequest(project, Testgen.ConfigMode.CHECK), project) override suspend fun TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow { return this.configureProject(request) diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/ClassRequest.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/ClassRequest.kt index 680fbbf50..27412ce19 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/ClassRequest.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/ClassRequest.kt @@ -5,14 +5,16 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.flow.Flow import org.utbot.cpp.clion.plugin.UTBot import testsgen.Testgen -import testsgen.TestsGenServiceGrpcKt +import testsgen.TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub class ClassRequest( request: Testgen.ClassRequest, project: Project, ) : BaseTestsRequest(request, project, UTBot.message("requests.class.description.progress")) { - override val logMessage: String = "Sending request to generate tests for CLASS." - override fun getInfoMessage(): String = "Class tests generated!" - override suspend fun TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow = + + override val logMessage: String = "Sending request to generate tests for class" + override fun getInfoMessage(): String = "Tests for class are generated!" + + override suspend fun TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow = generateClassTests(request) } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/FileRequest.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/FileRequest.kt index af5791a20..acd48677d 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/FileRequest.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/FileRequest.kt @@ -6,14 +6,16 @@ import kotlinx.coroutines.flow.Flow import org.utbot.cpp.clion.plugin.UTBot import org.utbot.cpp.clion.plugin.utils.fileNameOrNull import testsgen.Testgen -import testsgen.TestsGenServiceGrpcKt +import testsgen.TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub class FileRequest( request: Testgen.FileRequest, project: Project, ) : BaseTestsRequest(request, project, UTBot.message("requests.file.description.progress")) { - override val logMessage: String = "Sending request to generate for FILE." - override fun getInfoMessage(): String = "Tests for file ${(request.filePath.fileNameOrNull()?.plus(" ")) ?: ""}generated!" - override suspend fun TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow = + + override val logMessage: String = "Sending request to generate tests for file" + override fun getInfoMessage(): String = "Tests for file ${(request.filePath.fileNameOrNull()?.plus(" ")) ?: ""} are generated!" + + override suspend fun TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow = generateFileTests(request) } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/FolderRequest.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/FolderRequest.kt index f58a37de2..09a983259 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/FolderRequest.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/FolderRequest.kt @@ -6,14 +6,16 @@ import kotlinx.coroutines.flow.Flow import org.utbot.cpp.clion.plugin.UTBot import org.utbot.cpp.clion.plugin.utils.fileNameOrNull import testsgen.Testgen -import testsgen.TestsGenServiceGrpcKt +import testsgen.TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub class FolderRequest( request: Testgen.FolderRequest, project: Project, ) : BaseTestsRequest(request, project, UTBot.message("requests.folder.description.progress")) { - override val logMessage: String = "Sending request to generate tests for FOLDER." - override fun getInfoMessage(): String = "Tests for folder ${request.folderPath.fileNameOrNull()?.plus(" ") ?: ""} generated!" - override suspend fun TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow = + + override val logMessage: String = "Sending request to generate tests for folder." + override fun getInfoMessage(): String = "Tests for folder ${request.folderPath.fileNameOrNull()?.plus(" ") ?: ""} are generated!" + + override suspend fun TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow = generateFolderTests(request) } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/FunctionRequest.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/FunctionRequest.kt index 88914f212..9313a4fd4 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/FunctionRequest.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/FunctionRequest.kt @@ -5,17 +5,17 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.flow.Flow import org.utbot.cpp.clion.plugin.UTBot import testsgen.Testgen -import testsgen.TestsGenServiceGrpcKt +import testsgen.TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub class FunctionRequest( request: Testgen.FunctionRequest, project: Project, ) : BaseTestsRequest(request, project, UTBot.message("requests.function.description.progress")) { - override val logMessage: String = "Sending request to generate tests for FUNCTION." + override val logMessage: String = "Sending request to generate tests for function." override fun getInfoMessage(): String { - return "Function tests generated!" + return "Tests for function are generated!" } - override suspend fun TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow = + override suspend fun TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow = generateFunctionTests(request) } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/FunctionReturnTypeRequest.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/FunctionReturnTypeRequest.kt index 2fcc9acc4..51efb494b 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/FunctionReturnTypeRequest.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/FunctionReturnTypeRequest.kt @@ -3,20 +3,19 @@ package org.utbot.cpp.clion.plugin.client.requests import com.intellij.openapi.project.Project import kotlinx.coroutines.Job import testsgen.Testgen -import testsgen.TestsGenServiceGrpcKt +import testsgen.Testgen.FunctionTypeResponse +import testsgen.TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub class FunctionReturnTypeRequest( - project: Project, request: Testgen.FunctionRequest, - val processReturnType: suspend (Testgen.FunctionTypeResponse)->(Unit) -) : BaseRequest(request, project) { - override val logMessage: String = "Sending request to generate tests for CLASS." + project: Project, + val processReturnType: suspend (FunctionTypeResponse)->(Unit) +) : BaseRequest(request, project) { + + override val logMessage: String = "Sending request to generate tests for class" - override suspend fun Testgen.FunctionTypeResponse.handle(cancellationJob: Job?) { - processReturnType(this) - } + override suspend fun FunctionTypeResponse.handle(cancellationJob: Job?) = processReturnType(this) - override suspend fun TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Testgen.FunctionTypeResponse { - return getFunctionReturnType(request) - } + override suspend fun TestsGenServiceCoroutineStub.send(cancellationJob: Job?): FunctionTypeResponse = + getFunctionReturnType(request) } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/LineRequest.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/LineRequest.kt index 901503554..f2ad2a024 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/LineRequest.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/LineRequest.kt @@ -5,17 +5,18 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.flow.Flow import org.utbot.cpp.clion.plugin.UTBot import testsgen.Testgen -import testsgen.TestsGenServiceGrpcKt +import testsgen.TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub class LineRequest( request: Testgen.LineRequest, project: Project, ) : BaseTestsRequest(request, project, UTBot.message("requests.line.description.progress")) { - override val logMessage: String = "Sending request to generate for LINE." + + override val logMessage: String = "Sending request to generate tests for line." override fun getInfoMessage(): String { - return "Tests for line generated!" + return "Tests for line are generated!" } - override suspend fun TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow = + override suspend fun TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow = generateLineTests(request) } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/PredicateRequest.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/PredicateRequest.kt index 6d09bc857..c17943c49 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/PredicateRequest.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/PredicateRequest.kt @@ -5,16 +5,16 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.flow.Flow import org.utbot.cpp.clion.plugin.UTBot import testsgen.Testgen -import testsgen.TestsGenServiceGrpcKt +import testsgen.TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub class PredicateRequest( request: Testgen.PredicateRequest, project: Project, ) : BaseTestsRequest(request, project, UTBot.message("requests.predicate.description.progress")) { - override val logMessage: String = "Sending request to generate for PREDICATE." - override fun getInfoMessage(): String { - return "Tests for predicate generated!" - } - override suspend fun TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow = + + override val logMessage: String = "Sending request to generate tests for predicate" + override fun getInfoMessage(): String = "Tests for predicate are generated!" + + override suspend fun TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow = generatePredicateTests(request) } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/ProjectRequest.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/ProjectRequest.kt index abe93d35d..67a239147 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/ProjectRequest.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/ProjectRequest.kt @@ -5,17 +5,16 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.flow.Flow import org.utbot.cpp.clion.plugin.UTBot import testsgen.Testgen -import testsgen.TestsGenServiceGrpcKt +import testsgen.TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub class ProjectRequest( request: Testgen.ProjectRequest, project: Project, ) : BaseTestsRequest(request, project, UTBot.message("requests.project.description.progress")) { - override val logMessage: String = "Sending request to generate for PROJECT." - override fun getInfoMessage(): String { - return "Project tests generated!" - } - override suspend fun TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow = + override val logMessage: String = "Sending request to generate tests for project" + override fun getInfoMessage(): String = "Tests for project are generated!" + + override suspend fun TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow = generateProjectTests(request) } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/RunWithCoverageRequest.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/RunWithCoverageRequest.kt index ad4fa7ace..5f67f8e43 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/RunWithCoverageRequest.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/RunWithCoverageRequest.kt @@ -8,16 +8,18 @@ import org.utbot.cpp.clion.plugin.client.handlers.CoverageAndResultsHandler import org.utbot.cpp.clion.plugin.utils.convertFromRemotePathIfNeeded import org.utbot.cpp.clion.plugin.utils.testFilePathToSourceFilePath import testsgen.Testgen -import testsgen.TestsGenServiceGrpcKt +import testsgen.Testgen.CoverageAndResultsResponse +import testsgen.TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub class RunWithCoverageRequest( + request: Testgen.CoverageAndResultsRequest, project: Project, - request: Testgen.CoverageAndResultsRequest -): BaseRequest>(request, project) { - override val logMessage: String = "Sending request to get tests RESULTS and COVERAGE." +): BaseRequest>(request, project) { - override suspend fun Flow.handle(cancellationJob: Job?) { - request.testFilter.testFilePath + override val logMessage: String = "Sending request to get tests run results and coverage" + + override suspend fun Flow.handle(cancellationJob: Job?) { + //TODO: I do not understand this condition here if (cancellationJob?.isActive == true) { CoverageAndResultsHandler( project, @@ -29,7 +31,6 @@ class RunWithCoverageRequest( } } - override suspend fun TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow { - return createTestsCoverageAndResult(request) - } + override suspend fun TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow = + createTestsCoverageAndResult(request) } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/SnippetRequest.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/SnippetRequest.kt index fbb680e18..c9bf3c0e4 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/SnippetRequest.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/SnippetRequest.kt @@ -5,16 +5,16 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.flow.Flow import org.utbot.cpp.clion.plugin.UTBot import testsgen.Testgen -import testsgen.TestsGenServiceGrpcKt +import testsgen.TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub class SnippetRequest( request: Testgen.SnippetRequest, project: Project ) : BaseTestsRequest(request, project, UTBot.message("requests.snippet.description.progress")) { - override val logMessage: String = "Sending request to generate for SNIPPET." - override fun getInfoMessage(): String { - return "Snippet tests generated!" - } - override suspend fun TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow = + + override val logMessage: String = "Sending request to generate tests for snippet" + override fun getInfoMessage(): String = "Tests for snippet are generated!" + + override suspend fun TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow = generateSnippetTests(request) } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/grpc/ActionsGrpcRequests.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/grpc/ActionsGrpcRequests.kt index 6beeb17f0..8344575c8 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/grpc/ActionsGrpcRequests.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/grpc/ActionsGrpcRequests.kt @@ -3,6 +3,7 @@ package org.utbot.cpp.clion.plugin.grpc import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.CommonDataKeys import com.intellij.openapi.project.Project +import org.utbot.cpp.clion.plugin.utils.activeProject import org.utbot.cpp.clion.plugin.utils.convertToRemotePathIfNeeded import testsgen.Testgen import testsgen.Util diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/grpc/GrpcMessagingUtils.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/grpc/GrpcMessagingUtils.kt index 77779ec52..10ff347e2 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/grpc/GrpcMessagingUtils.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/grpc/GrpcMessagingUtils.kt @@ -1,6 +1,5 @@ package org.utbot.cpp.clion.plugin.grpc -import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.components.service import com.intellij.openapi.project.Project import org.utbot.cpp.clion.plugin.settings.UTBotAllSettings @@ -29,7 +28,4 @@ fun getProjectContextMessage(project: Project): Testgen.ProjectContext { .build() } -fun Project.allSettings() = this.service() - -fun AnActionEvent.activeProject() = this.project - ?: error("A project related to action event $this not found") \ No newline at end of file +fun Project.allSettings() = this.service() \ No newline at end of file diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/statusBar/StatusBarConnectionStatus.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/statusBar/StatusBarConnectionStatus.kt index eaba1c25a..9a0c9906b 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/statusBar/StatusBarConnectionStatus.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/statusBar/StatusBarConnectionStatus.kt @@ -13,8 +13,8 @@ import com.intellij.openapi.wm.StatusBarWidgetFactory import com.intellij.ui.awt.RelativePoint import com.intellij.util.Consumer import org.utbot.cpp.clion.plugin.actions.AskServerToGenerateJsonForProjectConfiguration -import org.utbot.cpp.clion.plugin.actions.ConfigureProjectAction -import org.utbot.cpp.clion.plugin.actions.ReconfigureProjectAction +import org.utbot.cpp.clion.plugin.actions.configure.ConfigureProjectAction +import org.utbot.cpp.clion.plugin.actions.configure.ReconfigureProjectAction import org.utbot.cpp.clion.plugin.actions.ShowWizardAction import org.utbot.cpp.clion.plugin.listeners.ConnectionStatus import org.utbot.cpp.clion.plugin.listeners.UTBotEventsListener diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/testsResults/UTBotTestRunLineMarkerProvider.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/testsResults/UTBotTestRunLineMarkerProvider.kt index 27d80ac60..fed25d5a9 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/testsResults/UTBotTestRunLineMarkerProvider.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/testsResults/UTBotTestRunLineMarkerProvider.kt @@ -8,7 +8,7 @@ import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.editor.markup.GutterIconRenderer import com.intellij.psi.PsiElement import javax.swing.Icon -import org.utbot.cpp.clion.plugin.actions.RunWithCoverageAction +import org.utbot.cpp.clion.plugin.actions.generate.RunWithCoverageAction class UTBotTestRunLineMarkerProvider : LineMarkerProvider { val log = Logger.getInstance(this::class.java) diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/utils/ActionUtils.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/utils/ActionUtils.kt new file mode 100644 index 000000000..3c299c184 --- /dev/null +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/utils/ActionUtils.kt @@ -0,0 +1,6 @@ +package org.utbot.cpp.clion.plugin.utils + +import com.intellij.openapi.actionSystem.AnActionEvent + +fun AnActionEvent.activeProject() = this.project + ?: error("A project related to action event $this not found") \ No newline at end of file diff --git a/clion-plugin/src/main/resources/META-INF/plugin.xml b/clion-plugin/src/main/resources/META-INF/plugin.xml index 58bca752e..1be41bda3 100644 --- a/clion-plugin/src/main/resources/META-INF/plugin.xml +++ b/clion-plugin/src/main/resources/META-INF/plugin.xml @@ -53,13 +53,13 @@ @@ -69,7 +69,7 @@ class="org.utbot.cpp.clion.plugin.actions.AskServerToGenerateBuildDir" text="Generate Build Directory" description="Ask server to generate build dir"/> @@ -98,7 +98,7 @@ @@ -109,7 +109,7 @@ @@ -120,7 +120,7 @@ @@ -131,7 +131,7 @@ @@ -142,7 +142,7 @@ @@ -153,7 +153,7 @@ @@ -163,7 +163,7 @@ diff --git a/clion-plugin/src/test/kotlin/org/utbot/cpp/clion/plugin/tests/GenerateForProjectTest.kt b/clion-plugin/src/test/kotlin/org/utbot/cpp/clion/plugin/tests/GenerateForProjectTest.kt index 54ec25a3c..ff4f8fb51 100644 --- a/clion-plugin/src/test/kotlin/org/utbot/cpp/clion/plugin/tests/GenerateForProjectTest.kt +++ b/clion-plugin/src/test/kotlin/org/utbot/cpp/clion/plugin/tests/GenerateForProjectTest.kt @@ -5,7 +5,7 @@ import org.utbot.cpp.clion.plugin.BaseGenerationTestCase import org.utbot.cpp.clion.plugin.Clang import org.utbot.cpp.clion.plugin.CppCompiler import org.utbot.cpp.clion.plugin.Gcc -import org.utbot.cpp.clion.plugin.actions.GenerateForProjectAction +import org.utbot.cpp.clion.plugin.actions.generate.GenerateForProjectAction import org.utbot.cpp.clion.plugin.assertFileOrDirExists import org.utbot.cpp.clion.plugin.assertTestFilesExist