Skip to content

provide better handling of network error/user inputs #469

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 24 commits into from
Oct 18, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions clion-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ plugins {
// Java support
id("java")
// Kotlin support
id("org.jetbrains.kotlin.jvm") version "1.6.10"
id("org.jetbrains.kotlin.jvm") version "1.7.20"
// Gradle IntelliJ Plugin
id("org.jetbrains.intellij") version "1.5.2"
// Gradle Changelog Plugin
Expand Down Expand Up @@ -91,11 +91,11 @@ detekt {
allRules = false // activate all available (even unstable) rules.
}

//kotlin {
// jvmToolchain {
// (this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(11))
// }
//}
kotlin {
jvmToolchain {
(this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(11))
}
}

protobuf {
protoc {
Expand Down Expand Up @@ -194,7 +194,7 @@ tasks {
setScanForTestClasses(false)
// Only run tests from classes that end with "Test"
include("**/*Test.class")
exclude("**/*BaseGenerationTestCaseTest.class")
exclude("**/*BaseGenerationTestCaseTest.class", "**/*BaseBuildingTest.class")
systemProperty("idea.log.debug.categories", true)
systemProperty("idea.log.trace.categories", true)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.intellij.ide.util.RunOnceUtil
import com.intellij.openapi.components.service
import com.intellij.openapi.project.Project
import com.intellij.openapi.startup.StartupActivity
import org.tinylog.kotlin.Logger
import org.utbot.cpp.clion.plugin.client.ManagedClient
import org.utbot.cpp.clion.plugin.settings.settings

Expand All @@ -12,6 +13,7 @@ class UTBotStartupActivity : StartupActivity {
// We initialize Client here, so that initialization will not happen
// when user issues first generation request which would cause a UI freeze.
if (project.settings.storedSettings.isPluginEnabled) {
Logger.info("startup activity is run: Initializing client")
initializeClient(project)
guessPathsOnFirstOpen(project)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,18 @@ package org.utbot.cpp.clion.plugin.actions
import com.intellij.openapi.actionSystem.AnActionEvent
import org.utbot.cpp.clion.plugin.UTBot
import org.utbot.cpp.clion.plugin.client.requests.CreateBuildDirRequest
import org.utbot.cpp.clion.plugin.grpc.GrpcRequestBuilderFactory
import org.utbot.cpp.clion.plugin.utils.activeProject
import org.utbot.cpp.clion.plugin.utils.client
import testsgen.Testgen

class AskServerToGenerateBuildDir : UTBotBaseAction(UTBot.message("projectConfigure.generate.buildDir")) {

override fun actionPerformed(e: AnActionEvent) = CreateBuildDirRequest(e).execute()
override fun actionPerformed(e: AnActionEvent) = CreateBuildDirRequest(
GrpcRequestBuilderFactory(e.activeProject()).createProjectConfigRequestBuilder(Testgen.ConfigMode.CREATE_BUILD_DIR),
e.activeProject(),
e.activeProject().client
).execute()

override fun updateIfEnabled(e: AnActionEvent) {
e.presentation.isEnabledAndVisible = e.project != null
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.utbot.cpp.clion.plugin.actions

import com.intellij.icons.AllIcons
import com.intellij.openapi.actionSystem.AnAction
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.components.service
import org.utbot.cpp.clion.plugin.ui.utbotToolWindow.targetToolWindow.UTBotTargetsController
Expand All @@ -16,4 +15,4 @@ class RefreshTargetsAction: UTBotBaseAction() {
e.presentation.isEnabledAndVisible = e.project != null
e.presentation.icon = AllIcons.Actions.Refresh
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package org.utbot.cpp.clion.plugin.actions

import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.options.ShowSettingsUtil
import com.intellij.openapi.project.DumbAwareAction
import org.utbot.cpp.clion.plugin.UTBot
import org.utbot.cpp.clion.plugin.settings.UTBotConfigurable

class ShowSettingsAction : DumbAwareAction(UTBot.message("show.settings.text"))/*, LightEditCompatible*/ {
override fun actionPerformed(e: AnActionEvent) {
ShowSettingsUtil.getInstance().showSettingsDialog(e.project, UTBotConfigurable::class.java)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@ abstract class UTBotBaseToggleAction(
}

abstract fun updateIfEnabled(e: AnActionEvent)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,16 @@ import com.intellij.openapi.actionSystem.AnActionEvent
import org.utbot.cpp.clion.plugin.UTBot
import org.utbot.cpp.clion.plugin.actions.UTBotBaseAction
import org.utbot.cpp.clion.plugin.client.requests.CheckProjectConfigurationRequest
import org.utbot.cpp.clion.plugin.grpc.GrpcRequestBuilderFactory
import org.utbot.cpp.clion.plugin.utils.activeProject
import testsgen.Testgen

class ConfigureProjectAction : UTBotBaseAction(UTBot.message("projectConfigure.configure")) {

override fun actionPerformed(e: AnActionEvent) = CheckProjectConfigurationRequest(e.activeProject()).execute()
override fun actionPerformed(e: AnActionEvent) = CheckProjectConfigurationRequest(
GrpcRequestBuilderFactory(e.activeProject()).createProjectConfigRequestBuilder(Testgen.ConfigMode.CHECK),
e.activeProject()
).execute()

override fun updateIfEnabled(e: AnActionEvent) {
e.presentation.isEnabledAndVisible = e.project != null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ package org.utbot.cpp.clion.plugin.actions.configure

import com.intellij.openapi.actionSystem.AnActionEvent
import org.utbot.cpp.clion.plugin.UTBot
import org.utbot.cpp.clion.plugin.actions.UTBotBaseAction
import org.utbot.cpp.clion.plugin.grpc.getProjectConfigGrpcRequest
import org.utbot.cpp.clion.plugin.client.requests.CheckProjectConfigurationRequest
import org.utbot.cpp.clion.plugin.actions.UTBotBaseAction
import org.utbot.cpp.clion.plugin.grpc.GrpcRequestBuilderFactory
import org.utbot.cpp.clion.plugin.utils.activeProject
import testsgen.Testgen

Expand All @@ -13,7 +13,7 @@ class ReconfigureProjectAction: UTBotBaseAction(UTBot.message("projectConfigure.
override fun actionPerformed(e: AnActionEvent) {
val project = e.activeProject()
CheckProjectConfigurationRequest(
getProjectConfigGrpcRequest(project, Testgen.ConfigMode.ALL),
GrpcRequestBuilderFactory(project).createProjectConfigRequestBuilder(Testgen.ConfigMode.ALL),
project,
).execute()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package org.utbot.cpp.clion.plugin.actions.generate

import com.intellij.openapi.actionSystem.AnActionEvent
import org.utbot.cpp.clion.plugin.actions.UTBotBaseAction
import org.utbot.cpp.clion.plugin.client.ManagedClient
import org.utbot.cpp.clion.plugin.utils.activeProject
import org.utbot.cpp.clion.plugin.utils.client

abstract class BaseGenerateTestsAction : UTBotBaseAction() {
Expand All @@ -10,7 +12,7 @@ abstract class BaseGenerateTestsAction : UTBotBaseAction() {
val isDefined: Boolean = isDefined(e)

e.presentation.isVisible = isDefined
e.presentation.isEnabled = isDefined && e.client.isServerAvailable()
e.presentation.isEnabled = isDefined && ManagedClient.isConnectedToServer(e.activeProject())
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@ 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.test.AssertionRequest
import org.utbot.cpp.clion.plugin.grpc.getAssertionGrpcRequest
import org.utbot.cpp.clion.plugin.grpc.GrpcRequestBuilderFactory
import org.utbot.cpp.clion.plugin.utils.activeProject
import org.utbot.cpp.clion.plugin.utils.getFilePathUnsafe
import org.utbot.cpp.clion.plugin.utils.getLineNumberUnsafe

class GenerateForAssertionAction : BaseGenerateTestsAction() {
override fun actionPerformed(e: AnActionEvent) =
AssertionRequest(
getAssertionGrpcRequest(e),
GrpcRequestBuilderFactory(e.activeProject()).createAssertionRequestBuilder(e.getLineNumberUnsafe(), e.getFilePathUnsafe()),
e.activeProject(),
).execute()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,16 @@ 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.test.ClassRequest
import org.utbot.cpp.clion.plugin.grpc.getClassGrpcRequest
import org.utbot.cpp.clion.plugin.grpc.GrpcRequestBuilderFactory
import org.utbot.cpp.clion.plugin.utils.activeProject
import org.utbot.cpp.clion.plugin.utils.getFilePathUnsafe
import org.utbot.cpp.clion.plugin.utils.getLineNumberUnsafe
import org.utbot.cpp.clion.plugin.utils.isCPPFileName

class GenerateForClassAction : BaseGenerateTestsAction() {
override fun actionPerformed(e: AnActionEvent) =
ClassRequest(
getClassGrpcRequest(e),
GrpcRequestBuilderFactory(e.activeProject()).createClassRequestBuilder(e.getFilePathUnsafe(), e.getLineNumberUnsafe()),
e.activeProject(),
).execute()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ 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.test.FileRequest
import org.utbot.cpp.clion.plugin.grpc.getFileGrpcRequest
import org.utbot.cpp.clion.plugin.utils.activeProject
import org.utbot.cpp.clion.plugin.utils.getBuilderForFileRequest
import org.utbot.cpp.clion.plugin.utils.isCPPorCFileName

class GenerateForFileAction : BaseGenerateTestsAction() {
override fun actionPerformed(e: AnActionEvent) =
FileRequest(
getFileGrpcRequest(e),
e.getBuilderForFileRequest(),
e.activeProject(),
).execute()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,16 @@ 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.test.FolderRequest
import org.utbot.cpp.clion.plugin.grpc.getFolderGrpcRequest
import org.utbot.cpp.clion.plugin.grpc.GrpcRequestBuilderFactory
import org.utbot.cpp.clion.plugin.utils.activeProject
import org.utbot.cpp.clion.plugin.utils.getFilePathUnsafe

class GenerateForFolderAction : BaseGenerateTestsAction() {
override fun actionPerformed(e: AnActionEvent) =
FolderRequest(
getFolderGrpcRequest(e),
e.activeProject()
).execute()
FolderRequest(
GrpcRequestBuilderFactory(e.activeProject()).createFolderRequestBuilder(e.getFilePathUnsafe()),
e.activeProject()
).execute()

override fun isDefined(e: AnActionEvent): Boolean {
val project = e.project
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,18 @@ 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.test.FunctionRequest
import org.utbot.cpp.clion.plugin.grpc.getFunctionGrpcRequest
import org.utbot.cpp.clion.plugin.grpc.GrpcRequestBuilderFactory
import org.utbot.cpp.clion.plugin.utils.activeProject
import org.utbot.cpp.clion.plugin.utils.getFilePathUnsafe
import org.utbot.cpp.clion.plugin.utils.getLineNumberUnsafe

class GenerateForFunctionAction : BaseGenerateTestsAction() {

override fun actionPerformed(e: AnActionEvent) =
override fun actionPerformed(e: AnActionEvent) {
FunctionRequest(
getFunctionGrpcRequest(e),
GrpcRequestBuilderFactory(e.activeProject()).createFunctionRequestBuilder(e.getFilePathUnsafe(), e.getLineNumberUnsafe()),
e.activeProject()
).execute()
}

override fun isDefined(e: AnActionEvent): Boolean {
val project = e.project
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,16 @@ 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.test.LineRequest
import org.utbot.cpp.clion.plugin.grpc.getLineGrpcRequest
import org.utbot.cpp.clion.plugin.utils.activeProject
import org.utbot.cpp.clion.plugin.utils.getBuilderForLineRequest

class GenerateForLineAction : BaseGenerateTestsAction() {
override fun actionPerformed(e: AnActionEvent) =
override fun actionPerformed(e: AnActionEvent) {
LineRequest(
getLineGrpcRequest(e),
e.getBuilderForLineRequest(),
e.activeProject(),
).execute()
}

override fun isDefined(e: AnActionEvent): Boolean {
val project = e.project
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@ import com.intellij.ui.DocumentAdapter
import com.intellij.ui.components.fields.ExtendableTextField
import javax.swing.ListSelectionModel
import javax.swing.event.DocumentEvent
import org.utbot.cpp.clion.plugin.grpc.getFunctionGrpcRequest
import org.utbot.cpp.clion.plugin.grpc.getPredicateGrpcRequest
import org.utbot.cpp.clion.plugin.UTBot
import org.utbot.cpp.clion.plugin.client.requests.test.FunctionReturnTypeRequest
import org.utbot.cpp.clion.plugin.client.requests.test.PredicateRequest
import org.utbot.cpp.clion.plugin.grpc.GrpcRequestBuilderFactory
import org.utbot.cpp.clion.plugin.utils.activeProject
import org.utbot.cpp.clion.plugin.utils.client
import org.utbot.cpp.clion.plugin.utils.getFilePathUnsafe
import org.utbot.cpp.clion.plugin.utils.getLineNumberUnsafe
import org.utbot.cpp.clion.plugin.utils.invokeOnEdt
import org.utbot.cpp.clion.plugin.utils.notifyError
import testsgen.Util.ValidationType
Expand Down Expand Up @@ -46,7 +48,13 @@ class GenerateForPredicateAction : BaseGenerateTestsAction() {
// when we gathered all needed information for predicate request, assemble it and execute it.
fun sendPredicateToServer(validationType: ValidationType, valueToCompare: String, comparisonOperator: String) =
PredicateRequest(
getPredicateGrpcRequest(e, comparisonOperator, validationType, valueToCompare),
GrpcRequestBuilderFactory(e.activeProject()).createPredicateRequestBuilder(
comparisonOperator,
validationType,
valueToCompare,
e.getLineNumberUnsafe(),
e.getFilePathUnsafe()
),
e.activeProject()
).apply {
e.client.executeRequest(this)
Expand All @@ -65,13 +73,15 @@ class GenerateForPredicateAction : BaseGenerateTestsAction() {
}
ValidationType.UNSUPPORTED -> {
notifyError(
UTBot.message("notify.title.error"),
"Unsupported return type for \'Generate Tests With Prompted Result\' feature: \n" +
"supported types are integers, booleans, characters, floats and strings"
)
return
}
ValidationType.UNRECOGNIZED -> {
notifyError(
UTBot.message("notify.title.error"),
"Could not recognise return type for 'Generate Tests With Prompted Result' feature: \n" +
"supported types are integers, booleans, characters, floats and strings"
)
Expand Down Expand Up @@ -101,7 +111,7 @@ class GenerateForPredicateAction : BaseGenerateTestsAction() {
}
//ask server for return type
FunctionReturnTypeRequest(
getFunctionGrpcRequest(e),
GrpcRequestBuilderFactory(e.activeProject()).createFunctionRequestBuilder(e.getFilePathUnsafe(), e.getLineNumberUnsafe()),
e.activeProject(),
) { functionReturnType ->
val validationType = functionReturnType.validationType
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
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.test.ProjectRequest
import org.utbot.cpp.clion.plugin.grpc.GrpcRequestBuilderFactory
import org.utbot.cpp.clion.plugin.utils.activeProject
import org.utbot.cpp.clion.plugin.utils.client

class GenerateForProjectAction : BaseGenerateTestsAction() {
override fun actionPerformed(e: AnActionEvent) {
ProjectRequest(
getProjectGrpcRequest(e),
GrpcRequestBuilderFactory(e.activeProject()).createProjectRequestBuilder(),
e.activeProject(),
).apply {
e.client.executeRequest(this)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@ 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.test.SnippetRequest
import org.utbot.cpp.clion.plugin.grpc.getSnippetGrpcRequest
import org.utbot.cpp.clion.plugin.grpc.GrpcRequestBuilderFactory
import org.utbot.cpp.clion.plugin.utils.activeProject
import org.utbot.cpp.clion.plugin.utils.getFilePathUnsafe

class GenerateForSnippetAction : BaseGenerateTestsAction() {
override fun actionPerformed(e: AnActionEvent) {
SnippetRequest(
getSnippetGrpcRequest(e),
GrpcRequestBuilderFactory(e.activeProject()).createSnippetRequestBuilder(e.getFilePathUnsafe()),
e.activeProject(),
).execute()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,15 @@ package org.utbot.cpp.clion.plugin.actions.generate

import com.intellij.openapi.actionSystem.AnActionEvent
import org.utbot.cpp.clion.plugin.client.requests.RunAllTestsWithCoverageRequest
import org.utbot.cpp.clion.plugin.grpc.GrpcRequestBuilderFactory
import org.utbot.cpp.clion.plugin.utils.activeProject

class RunAllTestsWithCoverageAction: BaseGenerateTestsAction() {
class RunAllTestsWithCoverageAction : BaseGenerateTestsAction() {
override fun actionPerformed(e: AnActionEvent) {
RunAllTestsWithCoverageRequest(e).execute()
RunAllTestsWithCoverageRequest(
GrpcRequestBuilderFactory(e.activeProject()).createCovAndResulstsRequestBuilder(null),
e.activeProject()
).execute()
}

override fun isDefined(e: AnActionEvent): Boolean {
Expand Down
Loading