@@ -8,7 +8,6 @@ import com.intellij.ide.fileTemplates.FileTemplateUtil
88import com.intellij.ide.fileTemplates.JavaTemplateUtil
99import com.intellij.ide.highlighter.JavaFileType
1010import com.intellij.openapi.application.ApplicationManager
11- import com.intellij.openapi.application.readAction
1211import com.intellij.openapi.application.runReadAction
1312import com.intellij.openapi.application.runWriteAction
1413import com.intellij.openapi.command.WriteCommandAction.runWriteCommandAction
@@ -42,18 +41,13 @@ import com.intellij.psi.codeStyle.JavaCodeStyleManager.DO_NOT_ADD_IMPORTS
4241import com.intellij.psi.search.GlobalSearchScopesCore
4342import com.intellij.testIntegration.TestIntegrationUtils
4443import com.siyeh.ig.psiutils.ImportUtils
45- import java.nio.file.Path
46- import java.util.concurrent.CancellationException
47- import java.util.concurrent.CountDownLatch
48- import java.util.concurrent.TimeUnit
4944import mu.KotlinLogging
5045import org.jetbrains.kotlin.asJava.classes.KtUltraLightClass
5146import org.jetbrains.kotlin.idea.KotlinFileType
5247import org.jetbrains.kotlin.idea.core.ShortenReferences
5348import org.jetbrains.kotlin.idea.core.getPackage
5449import org.jetbrains.kotlin.idea.core.util.toPsiDirectory
5550import org.jetbrains.kotlin.idea.util.ImportInsertHelperImpl
56- import org.jetbrains.kotlin.idea.util.projectStructure.allModules
5751import org.jetbrains.kotlin.name.FqName
5852import org.jetbrains.kotlin.psi.KtClass
5953import org.jetbrains.kotlin.psi.KtNamedFunction
@@ -64,6 +58,9 @@ import org.jetbrains.kotlin.psi.psiUtil.startOffset
6458import org.utbot.common.FileUtil
6559import org.utbot.common.HTML_LINE_SEPARATOR
6660import org.utbot.common.PathUtil.toHtmlLinkTag
61+ import org.utbot.framework.CancellationStrategyType.CANCEL_EVERYTHING
62+ import org.utbot.framework.CancellationStrategyType.NONE
63+ import org.utbot.framework.CancellationStrategyType.SAVE_PROCESSED_RESULTS
6764import org.utbot.framework.UtSettings
6865import org.utbot.framework.codegen.domain.Import
6966import org.utbot.framework.codegen.domain.ParametrizedTestSource
@@ -98,6 +95,10 @@ import org.utbot.intellij.plugin.util.assertIsWriteThread
9895import org.utbot.intellij.plugin.util.extractClassMethodsIncludingNested
9996import org.utbot.sarif.Sarif
10097import org.utbot.sarif.SarifReport
98+ import java.nio.file.Path
99+ import java.util.concurrent.CancellationException
100+ import java.util.concurrent.CountDownLatch
101+ import java.util.concurrent.TimeUnit
101102
102103object CodeGenerationController {
103104 private val logger = KotlinLogging .logger {}
@@ -114,7 +115,7 @@ object CodeGenerationController {
114115 model : GenerateTestsModel ,
115116 classesWithTests : Map <PsiClass , RdTestGenerationResult >,
116117 psi2KClass : Map <PsiClass , ClassId >,
117- proccess : EngineProcess ,
118+ process : EngineProcess ,
118119 indicator : ProgressIndicator
119120 ) {
120121 assertIsDispatchThread()
@@ -127,7 +128,14 @@ object CodeGenerationController {
127128 val utilClassListener = UtilClassListener ()
128129 var index = 0
129130 for ((srcClass, generateResult) in classesWithTests) {
130- if (indicator.isCanceled) return
131+ if (indicator.isCanceled) {
132+ when (UtSettings .cancellationStrategyType) {
133+ NONE ,
134+ SAVE_PROCESSED_RESULTS -> {}
135+ CANCEL_EVERYTHING -> break
136+ }
137+ }
138+
131139 val (count, testSetsId) = generateResult
132140 if (count <= 0 ) {
133141 latch.countDown()
@@ -143,7 +151,7 @@ object CodeGenerationController {
143151 val cut = psi2KClass[srcClass] ? : error(" Didn't find KClass instance for class ${srcClass.name} " )
144152 runWriteCommandAction(model.project, " Generate tests with UtBot" , null , {
145153 generateCodeAndReport(
146- proccess ,
154+ process ,
147155 testSetsId,
148156 srcClass,
149157 cut,
@@ -170,9 +178,9 @@ object CodeGenerationController {
170178 waitForCountDown(latch, indicator = indicator) {
171179 run (EDT_LATER , indicator," Go to EDT for utility class creation" ) {
172180 run (WRITE_ACTION , indicator, " Need write action for utility class creation" ) {
173- createUtilityClassIfNeed (utilClassListener, model, baseTestDirectory, indicator)
181+ createUtilityClassIfNeeded (utilClassListener, model, baseTestDirectory, indicator)
174182 run (THREAD_POOL , indicator, " Generate summary Sarif report" ) {
175- proceedTestReport(proccess , model)
183+ proceedTestReport(process , model)
176184 val sarifReportsPath =
177185 model.testModule.getOrCreateSarifReportsPath(model.testSourceRoot)
178186 UtTestsDialogProcessor .updateIndicator(indicator, UtTestsDialogProcessor .ProgressRange .SARIF , " Merge Sarif reports" , 0.75 )
@@ -181,7 +189,7 @@ object CodeGenerationController {
181189 UtTestsDialogProcessor .updateIndicator(indicator, UtTestsDialogProcessor .ProgressRange .SARIF , " Start tests with coverage" , 0.95 )
182190 RunConfigurationHelper .runTestsWithCoverage(model, testFilesPointers)
183191 }
184- proccess .terminate()
192+ process .terminate()
185193 UtTestsDialogProcessor .updateIndicator(indicator, UtTestsDialogProcessor .ProgressRange .SARIF , " Generation finished" , 1.0 )
186194
187195 run (EDT_LATER , null , " Run sarif-based inspections" ) {
@@ -232,7 +240,7 @@ object CodeGenerationController {
232240 )
233241 }
234242 }
235- private fun createUtilityClassIfNeed (
243+ private fun createUtilityClassIfNeeded (
236244 utilClassListener : UtilClassListener ,
237245 model : GenerateTestsModel ,
238246 baseTestDirectory : PsiDirectory ,
0 commit comments