diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForAssertionAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForAssertionAction.kt index 36c40694e..e477d7e45 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForAssertionAction.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForAssertionAction.kt @@ -2,7 +2,7 @@ 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.AssertionRequest +import org.utbot.cpp.clion.plugin.client.requests.test.AssertionRequest import org.utbot.cpp.clion.plugin.grpc.getAssertionGrpcRequest import org.utbot.cpp.clion.plugin.utils.activeProject 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 index 342933b0f..196915704 100644 --- 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 @@ -2,7 +2,7 @@ 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.client.requests.test.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 diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForFileAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForFileAction.kt index b24d3e127..0271ff6b1 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForFileAction.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForFileAction.kt @@ -2,7 +2,7 @@ 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.FileRequest +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.isCPPorCFileName 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 index 6508a37da..e14a7c990 100644 --- 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 @@ -2,7 +2,7 @@ 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.client.requests.test.FolderRequest import org.utbot.cpp.clion.plugin.grpc.getFolderGrpcRequest import org.utbot.cpp.clion.plugin.utils.activeProject 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 index bfd54d944..100e29b5c 100644 --- 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 @@ -2,7 +2,7 @@ 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.client.requests.test.FunctionRequest import org.utbot.cpp.clion.plugin.grpc.getFunctionGrpcRequest import org.utbot.cpp.clion.plugin.utils.activeProject diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForLineAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForLineAction.kt index 0bd0dad25..05670cdde 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForLineAction.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForLineAction.kt @@ -2,7 +2,7 @@ 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.LineRequest +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 diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForPredicateAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForPredicateAction.kt index 305fed1cf..0a86958df 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForPredicateAction.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForPredicateAction.kt @@ -11,8 +11,8 @@ 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.client.requests.FunctionReturnTypeRequest -import org.utbot.cpp.clion.plugin.client.requests.PredicateRequest +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.utils.activeProject import org.utbot.cpp.clion.plugin.utils.currentClient import org.utbot.cpp.clion.plugin.utils.notifyError diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForProjectAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForProjectAction.kt index 7afde629d..606c7d07c 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForProjectAction.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForProjectAction.kt @@ -2,7 +2,7 @@ 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.client.requests.test.ProjectRequest import org.utbot.cpp.clion.plugin.utils.activeProject import org.utbot.cpp.clion.plugin.utils.currentClient diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForSnippetAction.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForSnippetAction.kt index 351a25f3e..aa7c4c1b0 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForSnippetAction.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/generate/GenerateForSnippetAction.kt @@ -2,7 +2,7 @@ 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.SnippetRequest +import org.utbot.cpp.clion.plugin.client.requests.test.SnippetRequest import org.utbot.cpp.clion.plugin.grpc.getSnippetGrpcRequest import org.utbot.cpp.clion.plugin.utils.activeProject diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/Client.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/Client.kt index f784ee1ea..a32f92d9c 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/Client.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/Client.kt @@ -17,6 +17,7 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import kotlinx.coroutines.withTimeout import org.jetbrains.annotations.TestOnly +import org.utbot.cpp.clion.plugin.client.channels.LogChannel import org.utbot.cpp.clion.plugin.client.requests.CheckProjectConfigurationRequest import org.utbot.cpp.clion.plugin.grpc.getProjectConfigGrpcRequest import org.utbot.cpp.clion.plugin.listeners.ConnectionStatus @@ -31,7 +32,7 @@ import testsgen.Testgen class Client( val project: Project, clientId: String, - private val loggingChannels: List + private val loggingChannels: List ) : Disposable, GrpcClient(projectIndependentSettings.port, projectIndependentSettings.serverName, clientId) { var connectionStatus = ConnectionStatus.INIT diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/ClientManager.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/ClientManager.kt index 534671f85..9809334ec 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/ClientManager.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/ClientManager.kt @@ -3,6 +3,9 @@ package org.utbot.cpp.clion.plugin.client import com.intellij.openapi.Disposable import com.intellij.openapi.components.Service import com.intellij.openapi.project.Project +import org.utbot.cpp.clion.plugin.client.channels.GTestLogChannelImpl +import org.utbot.cpp.clion.plugin.client.channels.LogChannel +import org.utbot.cpp.clion.plugin.client.channels.ServerLogChannelImpl import kotlin.random.Random import org.utbot.cpp.clion.plugin.listeners.ConnectionSettingsListener import org.utbot.cpp.clion.plugin.utils.logger @@ -10,7 +13,7 @@ import org.utbot.cpp.clion.plugin.utils.logger @Service class ClientManager(val project: Project): Disposable { private val clientId = generateClientID() - private val loggingChannels = listOf(GTestChannel(project), ServerLogChannel(project)) + private val loggingChannels = listOf(GTestLogChannelImpl(project), ServerLogChannelImpl(project)) var client: Client = Client(project, clientId, loggingChannels) private set @@ -32,9 +35,7 @@ class ClientManager(val project: Project): Disposable { } } - override fun dispose() { - client.dispose() - } + override fun dispose() = client.dispose() private fun generateClientID(): String { fun createRandomSequence() = (1..RANDOM_SEQUENCE_LENGTH) diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/LoggingChannels.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/LoggingChannels.kt deleted file mode 100644 index 12e565106..000000000 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/LoggingChannels.kt +++ /dev/null @@ -1,81 +0,0 @@ -package org.utbot.cpp.clion.plugin.client - -import com.intellij.openapi.components.service -import com.intellij.openapi.project.Project -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.catch -import kotlinx.coroutines.flow.collect -import org.utbot.cpp.clion.plugin.grpc.getDummyGrpcRequest -import org.utbot.cpp.clion.plugin.grpc.getLogChannelGrpcRequest -import org.utbot.cpp.clion.plugin.ui.services.OutputProvider -import org.utbot.cpp.clion.plugin.ui.userLog.UTBotConsole -import org.utbot.cpp.clion.plugin.utils.invokeOnEdt -import org.utbot.cpp.clion.plugin.utils.logger -import testsgen.Testgen -import testsgen.TestsGenServiceGrpcKt - -interface LoggingChannel { - suspend fun provide(stub: TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub) -} - -abstract class BaseChannel(val project: Project): LoggingChannel { - abstract val name: String - abstract val logLevel: String - abstract val console: UTBotConsole - private val logger = project.logger - - abstract suspend fun close(stub: TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub) - abstract suspend fun open(stub: TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub): Flow - - open fun log(entry: Testgen.LogEntry) { - invokeOnEdt { - console.info(entry.message) - } - } - - override fun toString(): String = name - - override suspend fun provide(stub: TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub) { - try { - close(stub) - } catch (cause: io.grpc.StatusException) { - logger.error{ "Exception when closing log channel: $name \n$cause" } - } - - open(stub) - .catch { cause -> - logger.error{ "Exception in log channel: $name \n$cause" } - } - .collect { - log(it) - } - } -} - -class GTestChannel(project: Project): BaseChannel(project) { - override val name: String = "GTest Log" - override val logLevel: String = "TestLogLevel" - override val console: UTBotConsole = project.service().gtestOutputChannel.outputConsole - - override suspend fun close(stub: TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub) { - stub.closeGTestChannel(getDummyGrpcRequest()) - } - - override suspend fun open(stub: TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub): Flow { - return stub.openGTestChannel(getLogChannelGrpcRequest(logLevel)) - } -} - -class ServerLogChannel(project: Project): BaseChannel(project) { - override val name: String = "Server Log" - override val logLevel: String = "ServerLogLevel" - override val console: UTBotConsole = project.service().serverOutputChannel.outputConsole - - override suspend fun close(stub: TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub) { - stub.closeLogChannel(getDummyGrpcRequest()) - } - - override suspend fun open(stub: TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub): Flow { - return stub.openLogChannel(getLogChannelGrpcRequest(logLevel)) - } -} diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/channels/GTestLogChannelImpl.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/channels/GTestLogChannelImpl.kt new file mode 100644 index 000000000..bf87687c9 --- /dev/null +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/channels/GTestLogChannelImpl.kt @@ -0,0 +1,25 @@ +package org.utbot.cpp.clion.plugin.client.channels + +import com.intellij.openapi.components.service +import com.intellij.openapi.project.Project +import kotlinx.coroutines.flow.Flow +import org.utbot.cpp.clion.plugin.grpc.getDummyGrpcRequest +import org.utbot.cpp.clion.plugin.grpc.getLogChannelGrpcRequest +import org.utbot.cpp.clion.plugin.ui.services.OutputProvider +import org.utbot.cpp.clion.plugin.ui.userLog.UTBotConsole +import testsgen.Testgen +import testsgen.TestsGenServiceGrpcKt + +class GTestLogChannelImpl(project: Project): LogChannelImpl(project) { + override val name: String = "GTest Log" + override val logLevel: String = "TestLogLevel" + + override val console: UTBotConsole = project.service().gtestOutputChannel.outputConsole + + override suspend fun open(stub: TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub): Flow = + stub.openGTestChannel(getLogChannelGrpcRequest(logLevel)) + + override suspend fun close(stub: TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub) { + stub.closeGTestChannel(getDummyGrpcRequest()) + } +} \ No newline at end of file diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/channels/LogChannelImpl.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/channels/LogChannelImpl.kt new file mode 100644 index 000000000..dc5a1d03f --- /dev/null +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/channels/LogChannelImpl.kt @@ -0,0 +1,40 @@ +package org.utbot.cpp.clion.plugin.client.channels + +import com.intellij.openapi.project.Project +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.catch +import kotlinx.coroutines.flow.collect +import org.utbot.cpp.clion.plugin.ui.userLog.UTBotConsole +import org.utbot.cpp.clion.plugin.utils.invokeOnEdt +import org.utbot.cpp.clion.plugin.utils.logger +import testsgen.Testgen +import testsgen.TestsGenServiceGrpcKt + +interface LogChannel { + suspend fun provide(stub: TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub) +} + +abstract class LogChannelImpl(val project: Project): LogChannel { + abstract val name: String + abstract val logLevel: String + + abstract val console: UTBotConsole + + abstract suspend fun open(stub: TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub): Flow + abstract suspend fun close(stub: TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub) + + override fun toString(): String = name + + override suspend fun provide(stub: TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub) { + val logger = project.logger + try { + close(stub) + } catch (cause: io.grpc.StatusException) { + logger.error{ "Exception when closing log channel: $name \n$cause" } + } + + open(stub) + .catch { cause -> logger.error{ "Exception in log channel: $name \n$cause" } } + .collect { invokeOnEdt { console.info(it.message) } } + } +} \ No newline at end of file diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/channels/ServerLogChannelImpl.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/channels/ServerLogChannelImpl.kt new file mode 100644 index 000000000..4c9f9fb94 --- /dev/null +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/channels/ServerLogChannelImpl.kt @@ -0,0 +1,25 @@ +package org.utbot.cpp.clion.plugin.client.channels + +import com.intellij.openapi.components.service +import com.intellij.openapi.project.Project +import kotlinx.coroutines.flow.Flow +import org.utbot.cpp.clion.plugin.grpc.getDummyGrpcRequest +import org.utbot.cpp.clion.plugin.grpc.getLogChannelGrpcRequest +import org.utbot.cpp.clion.plugin.ui.services.OutputProvider +import org.utbot.cpp.clion.plugin.ui.userLog.UTBotConsole +import testsgen.Testgen +import testsgen.TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub + +class ServerLogChannelImpl(project: Project): LogChannelImpl(project) { + override val name: String = "Server Log" + override val logLevel: String = "ServerLogLevel" + + override val console: UTBotConsole = project.service().serverOutputChannel.outputConsole + + override suspend fun open(stub: TestsGenServiceCoroutineStub): Flow = + stub.openLogChannel(getLogChannelGrpcRequest(logLevel)) + + override suspend fun close(stub: TestsGenServiceCoroutineStub) { + stub.closeLogChannel(getDummyGrpcRequest()) + } +} diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/handlers/CoverageAndResultsHandler.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/handlers/CoverageAndResultsHandler.kt index 27b212dd8..d03684b4b 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/handlers/CoverageAndResultsHandler.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/handlers/CoverageAndResultsHandler.kt @@ -62,14 +62,12 @@ class CoverageAndResultsHandler( ) manager.coverageGathered(suite) - notify(response) + notifyCoverageReceived() } - private fun notify(reponse: Testgen.CoverageAndResultsResponse) { - sourceFilePath ?: return - notifyInfo( - "Coverage received!", project, - FocusAction(sourceFilePath) - ) + private fun notifyCoverageReceived() { + if (sourceFilePath != null) { + notifyInfo("Coverage received!", project, FocusAction(sourceFilePath)) + } } } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/BaseRequest.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/BaseRequest.kt index 1ea4d5412..985790989 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/BaseRequest.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/BaseRequest.kt @@ -2,18 +2,10 @@ package org.utbot.cpp.clion.plugin.client.requests import com.intellij.openapi.project.Project import kotlinx.coroutines.Job -import kotlinx.coroutines.flow.Flow -import org.utbot.cpp.clion.plugin.actions.FocusAction import org.utbot.cpp.clion.plugin.client.Request -import org.utbot.cpp.clion.plugin.client.handlers.TestsStreamHandler import org.utbot.cpp.clion.plugin.utils.getCurrentClient -import org.utbot.cpp.clion.plugin.utils.getLongestCommonPathFromRoot -import org.utbot.cpp.clion.plugin.utils.isHeaderFile import org.utbot.cpp.clion.plugin.utils.logger -import org.utbot.cpp.clion.plugin.utils.notifyInfo -import testsgen.Testgen -import testsgen.TestsGenServiceGrpcKt -import java.nio.file.Path +import testsgen.TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub /** * Base class for requests. @@ -21,60 +13,18 @@ import java.nio.file.Path */ abstract class BaseRequest(val request: X, val project: Project) : Request { abstract val logMessage: String - override suspend fun execute(stub: TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub, cancellationJob: Job?) { - logRequest() + + override suspend fun execute(stub: TestsGenServiceCoroutineStub, cancellationJob: Job?) { + project.logger.info { "$logMessage \n$request" } stub.send(cancellationJob).handle(cancellationJob) } - abstract suspend fun TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Y + abstract suspend fun TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Y abstract suspend fun Y.handle(cancellationJob: Job?) - fun executeUsingCurrentClient() { - project.getCurrentClient().executeRequestIfNotDisposed(this) - } + fun executeUsingCurrentClient() = project.getCurrentClient().executeRequestIfNotDisposed(this) - open fun logRequest() { - project.logger.info { "$logMessage \n$request" } - } + open fun logRequest() = project.logger.info { "$logMessage \n$request" } } -/** - * Base class for requests that handle a stream of [Testgen.TestsResponse]. - * @param progressName - a name of a progress that user will see, when this request will be executing. - */ -abstract class BaseTestsRequest(request: R, project: Project, private val progressName: String) : - BaseRequest>(request, project) { - val logger = project.logger - - override suspend fun Flow.handle(cancellationJob: Job?) { - if (cancellationJob?.isActive == true) { - TestsStreamHandler( - project, - this, - progressName, - cancellationJob, - ::notifySuccess, - ::notifyError - ).handle() - } - } - - open fun getFocusTarget(generatedTestFiles: List): Path? { - return generatedTestFiles.filter { !isHeaderFile(it.fileName.toString()) }.getLongestCommonPathFromRoot() - } - - override fun logRequest() { - logger.info { "$logMessage \n$request" } - } - - open fun getInfoMessage() = "Tests generated!" - - open fun notifySuccess(generatedTestFiles: List) { - notifyInfo(getInfoMessage(), project, getFocusTarget(generatedTestFiles)?.let { - FocusAction(it) - }) - } - - open fun notifyError(cause: Throwable) {} -} 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 4f70412c3..9c6a47275 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 @@ -13,6 +13,7 @@ class CheckProjectConfigurationRequest( request: Testgen.ProjectConfigRequest, project: Project, ): BaseRequest>(request, project) { + override val logMessage: String = "Sending request to check project configuration." constructor(project: Project): this(getProjectConfigGrpcRequest(project, Testgen.ConfigMode.CHECK), project) diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/CreateBuildFolderRequest.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/CreateBuildFolderRequest.kt index d0dc9c2b1..fb22e9e64 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/CreateBuildFolderRequest.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/CreateBuildFolderRequest.kt @@ -7,9 +7,10 @@ import org.utbot.cpp.clion.plugin.UTBot import org.utbot.cpp.clion.plugin.client.Client import org.utbot.cpp.clion.plugin.grpc.getProjectConfigGrpcRequest import org.utbot.cpp.clion.plugin.client.handlers.CreateBuildDirHandler +import org.utbot.cpp.clion.plugin.utils.activeProject import org.utbot.cpp.clion.plugin.utils.getCurrentClient import testsgen.Testgen -import testsgen.TestsGenServiceGrpcKt +import testsgen.TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub class CreateBuildDirRequest( val client: Client, @@ -19,12 +20,11 @@ class CreateBuildDirRequest( constructor(e: AnActionEvent) : this( e.project?.getCurrentClient() ?: error("project is null for event: $e"), - getProjectConfigGrpcRequest(e.project!!, Testgen.ConfigMode.CREATE_BUILD_DIR) + getProjectConfigGrpcRequest(e.activeProject(), Testgen.ConfigMode.CREATE_BUILD_DIR) ) - override suspend fun TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow { - return this.configureProject(request) - } + override suspend fun TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Flow = + this.configureProject(request) override suspend fun Flow.handle(cancellationJob: Job?) { if (cancellationJob?.isActive == true) { diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/GenerateJsonFilesRequest.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/GenerateJsonFilesRequest.kt index a45185bb2..a39e9f813 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/GenerateJsonFilesRequest.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/GenerateJsonFilesRequest.kt @@ -7,6 +7,7 @@ import kotlinx.coroutines.flow.Flow import org.utbot.cpp.clion.plugin.UTBot import org.utbot.cpp.clion.plugin.grpc.getProjectConfigGrpcRequest import org.utbot.cpp.clion.plugin.client.handlers.GenerateJsonHandler +import org.utbot.cpp.clion.plugin.utils.activeProject import testsgen.Testgen import testsgen.TestsGenServiceGrpcKt @@ -17,7 +18,7 @@ class GenerateJsonFilesRequest( override val logMessage: String = "Sending request to check project configuration." constructor(project: Project): this(project, getProjectConfigGrpcRequest(project, Testgen.ConfigMode.GENERATE_JSON_FILES)) - constructor(e: AnActionEvent): this(e.project!!) + constructor(e: AnActionEvent): this(e.activeProject()) 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/ProjectTargetsRequest.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/ProjectTargetsRequest.kt index 5da7db874..3385c5836 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/ProjectTargetsRequest.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/ProjectTargetsRequest.kt @@ -10,12 +10,11 @@ class ProjectTargetsRequest( request: Testgen.ProjectTargetsRequest, val processTargets: suspend (Testgen.ProjectTargetsResponse)->Unit ): BaseRequest(request, project) { - override val logMessage: String = "Sending request to get PROJECT TARGETS." - override suspend fun Testgen.ProjectTargetsResponse.handle(cancellationJob: Job?) { - processTargets(this) - } - override suspend fun TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Testgen.ProjectTargetsResponse { - return getProjectTargets(request) - } + override val logMessage: String = "Sending request to get project targets" + + override suspend fun Testgen.ProjectTargetsResponse.handle(cancellationJob: Job?) = processTargets(this) + + override suspend fun TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub.send(cancellationJob: Job?): Testgen.ProjectTargetsResponse = + getProjectTargets(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 5f67f8e43..630049078 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 @@ -19,7 +19,6 @@ class RunWithCoverageRequest( 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, 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/test/AssertionRequest.kt similarity index 93% rename from clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/AssertionRequest.kt rename to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/test/AssertionRequest.kt index 0f1ea7fdb..7667dba53 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/test/AssertionRequest.kt @@ -1,4 +1,4 @@ -package org.utbot.cpp.clion.plugin.client.requests +package org.utbot.cpp.clion.plugin.client.requests.test import com.intellij.openapi.project.Project import kotlinx.coroutines.Job diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/test/BaseTestsRequest.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/test/BaseTestsRequest.kt new file mode 100644 index 000000000..2720a7be5 --- /dev/null +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/test/BaseTestsRequest.kt @@ -0,0 +1,54 @@ +package org.utbot.cpp.clion.plugin.client.requests.test + +import com.intellij.openapi.project.Project +import kotlinx.coroutines.Job +import kotlinx.coroutines.flow.Flow +import org.utbot.cpp.clion.plugin.actions.FocusAction +import org.utbot.cpp.clion.plugin.client.handlers.TestsStreamHandler +import org.utbot.cpp.clion.plugin.client.requests.BaseRequest +import org.utbot.cpp.clion.plugin.utils.getLongestCommonPathFromRoot +import org.utbot.cpp.clion.plugin.utils.isHeaderFile +import org.utbot.cpp.clion.plugin.utils.logger +import org.utbot.cpp.clion.plugin.utils.notifyInfo +import testsgen.Testgen +import java.nio.file.Path + +/** + * Base class for requests that handle a stream of [Testgen.TestsResponse]. + * @param progressName - a name of a progress that user will see, when this request will be executing. + */ +abstract class BaseTestsRequest(request: R, project: Project, private val progressName: String) : + BaseRequest>(request, project) { + val logger = project.logger + + override suspend fun Flow.handle(cancellationJob: Job?) { + if (cancellationJob?.isActive == true) { + TestsStreamHandler( + project, + this, + progressName, + cancellationJob, + ::notifySuccess, + ::notifyError + ).handle() + } + } + + open fun getFocusTarget(generatedTestFiles: List): Path? { + return generatedTestFiles.filter { !isHeaderFile(it.fileName.toString()) }.getLongestCommonPathFromRoot() + } + + override fun logRequest() { + logger.info { "$logMessage \n$request" } + } + + open fun getInfoMessage() = "Tests generated!" + + open fun notifySuccess(generatedTestFiles: List) { + notifyInfo(getInfoMessage(), project, getFocusTarget(generatedTestFiles)?.let { + FocusAction(it) + }) + } + + open fun notifyError(cause: Throwable) {} +} \ No newline at end of file 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/test/ClassRequest.kt similarity index 93% rename from clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/ClassRequest.kt rename to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/test/ClassRequest.kt index 27412ce19..932acf81f 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/test/ClassRequest.kt @@ -1,4 +1,4 @@ -package org.utbot.cpp.clion.plugin.client.requests +package org.utbot.cpp.clion.plugin.client.requests.test import com.intellij.openapi.project.Project import kotlinx.coroutines.Job 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/test/FileRequest.kt similarity index 93% rename from clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/FileRequest.kt rename to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/test/FileRequest.kt index acd48677d..5c5921531 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/test/FileRequest.kt @@ -1,4 +1,4 @@ -package org.utbot.cpp.clion.plugin.client.requests +package org.utbot.cpp.clion.plugin.client.requests.test import com.intellij.openapi.project.Project import kotlinx.coroutines.Job 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/test/FolderRequest.kt similarity index 94% rename from clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/FolderRequest.kt rename to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/test/FolderRequest.kt index 09a983259..e5f4e24ab 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/test/FolderRequest.kt @@ -1,4 +1,4 @@ -package org.utbot.cpp.clion.plugin.client.requests +package org.utbot.cpp.clion.plugin.client.requests.test import com.intellij.openapi.project.Project import kotlinx.coroutines.Job 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/test/FunctionRequest.kt similarity index 81% rename from clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/FunctionRequest.kt rename to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/test/FunctionRequest.kt index 9313a4fd4..ec1d4ec3a 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/test/FunctionRequest.kt @@ -1,4 +1,4 @@ -package org.utbot.cpp.clion.plugin.client.requests +package org.utbot.cpp.clion.plugin.client.requests.test import com.intellij.openapi.project.Project import kotlinx.coroutines.Job @@ -13,9 +13,8 @@ class FunctionRequest( ) : BaseTestsRequest(request, project, UTBot.message("requests.function.description.progress")) { override val logMessage: String = "Sending request to generate tests for function." - override fun getInfoMessage(): String { - return "Tests for function are generated!" - } + override fun getInfoMessage(): String = "Tests for function are generated!" + 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/test/FunctionReturnTypeRequest.kt similarity index 87% rename from clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/FunctionReturnTypeRequest.kt rename to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/test/FunctionReturnTypeRequest.kt index 51efb494b..5d7413679 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/test/FunctionReturnTypeRequest.kt @@ -1,7 +1,8 @@ -package org.utbot.cpp.clion.plugin.client.requests +package org.utbot.cpp.clion.plugin.client.requests.test import com.intellij.openapi.project.Project import kotlinx.coroutines.Job +import org.utbot.cpp.clion.plugin.client.requests.BaseRequest import testsgen.Testgen import testsgen.Testgen.FunctionTypeResponse import testsgen.TestsGenServiceGrpcKt.TestsGenServiceCoroutineStub 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/test/LineRequest.kt similarity index 81% rename from clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/LineRequest.kt rename to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/test/LineRequest.kt index f2ad2a024..eba6d6b0d 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/test/LineRequest.kt @@ -1,4 +1,4 @@ -package org.utbot.cpp.clion.plugin.client.requests +package org.utbot.cpp.clion.plugin.client.requests.test import com.intellij.openapi.project.Project import kotlinx.coroutines.Job @@ -13,9 +13,7 @@ class LineRequest( ) : BaseTestsRequest(request, project, UTBot.message("requests.line.description.progress")) { override val logMessage: String = "Sending request to generate tests for line." - override fun getInfoMessage(): String { - return "Tests for line are generated!" - } + override fun getInfoMessage(): String = "Tests for line are generated!" 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/test/PredicateRequest.kt similarity index 93% rename from clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/PredicateRequest.kt rename to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/test/PredicateRequest.kt index c17943c49..392d36578 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/test/PredicateRequest.kt @@ -1,4 +1,4 @@ -package org.utbot.cpp.clion.plugin.client.requests +package org.utbot.cpp.clion.plugin.client.requests.test import com.intellij.openapi.project.Project import kotlinx.coroutines.Job 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/test/ProjectRequest.kt similarity index 93% rename from clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/ProjectRequest.kt rename to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/test/ProjectRequest.kt index 67a239147..db1e747b9 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/test/ProjectRequest.kt @@ -1,4 +1,4 @@ -package org.utbot.cpp.clion.plugin.client.requests +package org.utbot.cpp.clion.plugin.client.requests.test import com.intellij.openapi.project.Project import kotlinx.coroutines.Job 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/test/SnippetRequest.kt similarity index 93% rename from clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/SnippetRequest.kt rename to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/client/requests/test/SnippetRequest.kt index c9bf3c0e4..0be96a02b 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/test/SnippetRequest.kt @@ -1,4 +1,4 @@ -package org.utbot.cpp.clion.plugin.client.requests +package org.utbot.cpp.clion.plugin.client.requests.test import com.intellij.openapi.project.Project import kotlinx.coroutines.Job diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/statusBar/StatusBarVerboseMode.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/statusBar/UTBotStatusBarVerboseWidget.kt similarity index 66% rename from clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/statusBar/StatusBarVerboseMode.kt rename to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/statusBar/UTBotStatusBarVerboseWidget.kt index 4e6917b0c..4137b31c7 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/statusBar/StatusBarVerboseMode.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/statusBar/UTBotStatusBarVerboseWidget.kt @@ -1,34 +1,13 @@ package org.utbot.cpp.clion.plugin.ui.statusBar -import com.intellij.openapi.project.Project import com.intellij.openapi.wm.StatusBar import com.intellij.openapi.wm.StatusBarWidget -import com.intellij.openapi.wm.StatusBarWidgetFactory import com.intellij.util.Consumer import org.utbot.cpp.clion.plugin.listeners.UTBotSettingsChangedListener import org.utbot.cpp.clion.plugin.settings.settings import java.awt.Component import java.awt.event.MouseEvent -class VerboseModeWidgetFactory : StatusBarWidgetFactory { - override fun getId() = STATUS_BAR_ID - - override fun getDisplayName() = STATUS_BAR_DISPLAY_NAME - - override fun isAvailable(project: Project): Boolean = true - - override fun createWidget(project: Project): StatusBarWidget = UTBotStatusBarVerboseWidget() - - override fun disposeWidget(widget: StatusBarWidget) {} - - override fun canBeEnabledOn(statusBar: StatusBar): Boolean = statusBar.project != null - - companion object { - const val STATUS_BAR_ID = "UTBot: verbose mode" - const val STATUS_BAR_DISPLAY_NAME = "UTBot: Verbose Formatting" - } -} - class UTBotStatusBarVerboseWidget : StatusBarWidget, StatusBarWidget.TextPresentation { private var statusBar: StatusBar? = null @@ -47,9 +26,11 @@ class UTBotStatusBarVerboseWidget : StatusBarWidget, StatusBarWidget.TextPresent override fun getTooltipText() = VerboseModeWidgetFactory.STATUS_BAR_DISPLAY_NAME override fun getClickConsumer() = Consumer { _ -> - val settings = statusBar?.project!!.settings.storedSettings - settings.verbose = !settings.verbose statusBar?.updateWidget(ID()) + + val project = statusBar?.project ?: return@Consumer + val settings = project.settings.storedSettings + settings.verbose = !settings.verbose } override fun getText(): String { diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/statusBar/VerboseModeWidgetFactory.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/statusBar/VerboseModeWidgetFactory.kt new file mode 100644 index 000000000..2719f8ea3 --- /dev/null +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/statusBar/VerboseModeWidgetFactory.kt @@ -0,0 +1,25 @@ +package org.utbot.cpp.clion.plugin.ui.statusBar + +import com.intellij.openapi.project.Project +import com.intellij.openapi.wm.StatusBar +import com.intellij.openapi.wm.StatusBarWidget +import com.intellij.openapi.wm.StatusBarWidgetFactory + +class VerboseModeWidgetFactory : StatusBarWidgetFactory { + override fun getId() = STATUS_BAR_ID + + override fun getDisplayName() = STATUS_BAR_DISPLAY_NAME + + override fun isAvailable(project: Project): Boolean = true + + override fun createWidget(project: Project): StatusBarWidget = UTBotStatusBarVerboseWidget() + + override fun disposeWidget(widget: StatusBarWidget) {} + + override fun canBeEnabledOn(statusBar: StatusBar): Boolean = statusBar.project != null + + companion object { + const val STATUS_BAR_ID = "UTBot: verbose mode" + const val STATUS_BAR_DISPLAY_NAME = "UTBot: Verbose Formatting" + } +} \ No newline at end of file diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/targetsToolWindow/UTBotTarget.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/targetsToolWindow/UTBotTarget.kt index 74416c747..6a62cd768 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/targetsToolWindow/UTBotTarget.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/targetsToolWindow/UTBotTarget.kt @@ -5,11 +5,14 @@ import org.utbot.cpp.clion.plugin.utils.convertFromRemotePathIfNeeded import testsgen.Testgen data class UTBotTarget(val path: String, val name: String, val description: String) { + constructor(target: Testgen.ProjectTarget, project: Project) : this( + path = if (target.name == autoTarget.name) target.path else target.path.convertFromRemotePathIfNeeded(project) - .toAbsolutePath().toString(), - target.name, - target.description + .toAbsolutePath() + .toString(), + name = target.name, + description = target.description ) companion object { diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/targetsToolWindow/UTBotTargetsController.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/targetsToolWindow/UTBotTargetsController.kt index 7a30be891..2bba91b8a 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/targetsToolWindow/UTBotTargetsController.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/targetsToolWindow/UTBotTargetsController.kt @@ -68,9 +68,7 @@ class UTBotTargetsController(val project: Project) { } } - fun createTargetsToolWindow(): UTBotTargetsToolWindow { - return UTBotTargetsToolWindow(listModel, this) - } + fun createTargetsToolWindow(): UTBotTargetsToolWindow = UTBotTargetsToolWindow(listModel, this) fun selectionChanged(selectedTarget: UTBotTarget) { // when user selects target update model diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/targetsToolWindow/UTBotTargetsToolWindow.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/targetsToolWindow/UTBotTargetsToolWindow.kt index 4b69da5ef..f2f05ff9d 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/targetsToolWindow/UTBotTargetsToolWindow.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/targetsToolWindow/UTBotTargetsToolWindow.kt @@ -11,7 +11,7 @@ import javax.swing.ListSelectionModel class UTBotTargetsToolWindow( listModel: CollectionListModel, - val controller: UTBotTargetsController + private val controller: UTBotTargetsController, ): SimpleToolWindowPanel(true, true) { private val uiList = JBList(listModel) @@ -34,9 +34,9 @@ class UTBotTargetsToolWindow( selected: Boolean, hasFocus: Boolean ) { - append(target.name, SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES); + append(target.name, SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES) append(" ") - append(target.description, SimpleTextAttributes.GRAYED_ATTRIBUTES); + append(target.description, SimpleTextAttributes.GRAYED_ATTRIBUTES) } } } diff --git a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/targetsToolWindow/UTBotTargetsToolWindowFactory.kt b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/targetsToolWindow/UTBotTargetsToolWindowFactory.kt index a15393bbb..a00b7f62a 100644 --- a/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/targetsToolWindow/UTBotTargetsToolWindowFactory.kt +++ b/clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/ui/targetsToolWindow/UTBotTargetsToolWindowFactory.kt @@ -11,9 +11,9 @@ class UTBotTargetsToolWindowFactory : ToolWindowFactory { override fun createToolWindowContent(project: Project, toolWindow: ToolWindow) { logger.info("createToolWindowContent was called") val contentManager = toolWindow.contentManager - val content = contentManager.factory.createContent( - UTBotTargetsController(project).createTargetsToolWindow(), null, false - ) - toolWindow.contentManager.addContent(content) + val utbotToolWindow = UTBotTargetsController(project).createTargetsToolWindow() + + val content = contentManager.factory.createContent(utbotToolWindow, null, false,) + contentManager.addContent(content) } } diff --git a/clion-plugin/src/test/kotlin/org/utbot/cpp/clion/plugin/BaseGenerationTestCase.kt b/clion-plugin/src/test/kotlin/org/utbot/cpp/clion/plugin/BaseGenerationTestCase.kt index c9a9eb9f8..8f78d765b 100644 --- a/clion-plugin/src/test/kotlin/org/utbot/cpp/clion/plugin/BaseGenerationTestCase.kt +++ b/clion-plugin/src/test/kotlin/org/utbot/cpp/clion/plugin/BaseGenerationTestCase.kt @@ -37,7 +37,7 @@ abstract class BaseGenerationTestCase { * This class solves the problem, by using [testsDirectory] * instead of some generated temp directory. */ - class TestFixtureProxy(val testsDirectory: Path) : TempDirTestFixtureImpl() { + class TestFixtureProxy(private val testsDirectory: Path) : TempDirTestFixtureImpl() { override fun doCreateTempDirectory(): Path { return testsDirectory }