@@ -8,7 +8,6 @@ import com.intellij.ide.fileTemplates.FileTemplateUtil
8
8
import com.intellij.ide.fileTemplates.JavaTemplateUtil
9
9
import com.intellij.ide.highlighter.JavaFileType
10
10
import com.intellij.openapi.application.ApplicationManager
11
- import com.intellij.openapi.application.readAction
12
11
import com.intellij.openapi.application.runReadAction
13
12
import com.intellij.openapi.application.runWriteAction
14
13
import com.intellij.openapi.command.WriteCommandAction.runWriteCommandAction
@@ -42,18 +41,13 @@ import com.intellij.psi.codeStyle.JavaCodeStyleManager.DO_NOT_ADD_IMPORTS
42
41
import com.intellij.psi.search.GlobalSearchScopesCore
43
42
import com.intellij.testIntegration.TestIntegrationUtils
44
43
import 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
49
44
import mu.KotlinLogging
50
45
import org.jetbrains.kotlin.asJava.classes.KtUltraLightClass
51
46
import org.jetbrains.kotlin.idea.KotlinFileType
52
47
import org.jetbrains.kotlin.idea.core.ShortenReferences
53
48
import org.jetbrains.kotlin.idea.core.getPackage
54
49
import org.jetbrains.kotlin.idea.core.util.toPsiDirectory
55
50
import org.jetbrains.kotlin.idea.util.ImportInsertHelperImpl
56
- import org.jetbrains.kotlin.idea.util.projectStructure.allModules
57
51
import org.jetbrains.kotlin.name.FqName
58
52
import org.jetbrains.kotlin.psi.KtClass
59
53
import org.jetbrains.kotlin.psi.KtNamedFunction
@@ -64,6 +58,9 @@ import org.jetbrains.kotlin.psi.psiUtil.startOffset
64
58
import org.utbot.common.FileUtil
65
59
import org.utbot.common.HTML_LINE_SEPARATOR
66
60
import 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
67
64
import org.utbot.framework.UtSettings
68
65
import org.utbot.framework.codegen.domain.Import
69
66
import org.utbot.framework.codegen.domain.ParametrizedTestSource
@@ -98,6 +95,10 @@ import org.utbot.intellij.plugin.util.assertIsWriteThread
98
95
import org.utbot.intellij.plugin.util.extractClassMethodsIncludingNested
99
96
import org.utbot.sarif.Sarif
100
97
import 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
101
102
102
103
object CodeGenerationController {
103
104
private val logger = KotlinLogging .logger {}
@@ -114,7 +115,7 @@ object CodeGenerationController {
114
115
model : GenerateTestsModel ,
115
116
classesWithTests : Map <PsiClass , RdTestGenerationResult >,
116
117
psi2KClass : Map <PsiClass , ClassId >,
117
- proccess : EngineProcess ,
118
+ process : EngineProcess ,
118
119
indicator : ProgressIndicator
119
120
) {
120
121
assertIsDispatchThread()
@@ -127,7 +128,14 @@ object CodeGenerationController {
127
128
val utilClassListener = UtilClassListener ()
128
129
var index = 0
129
130
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
+
131
139
val (count, testSetsId) = generateResult
132
140
if (count <= 0 ) {
133
141
latch.countDown()
@@ -143,7 +151,7 @@ object CodeGenerationController {
143
151
val cut = psi2KClass[srcClass] ? : error(" Didn't find KClass instance for class ${srcClass.name} " )
144
152
runWriteCommandAction(model.project, " Generate tests with UtBot" , null , {
145
153
generateCodeAndReport(
146
- proccess ,
154
+ process ,
147
155
testSetsId,
148
156
srcClass,
149
157
cut,
@@ -170,9 +178,9 @@ object CodeGenerationController {
170
178
waitForCountDown(latch, indicator = indicator) {
171
179
run (EDT_LATER , indicator," Go to EDT for utility class creation" ) {
172
180
run (WRITE_ACTION , indicator, " Need write action for utility class creation" ) {
173
- createUtilityClassIfNeed (utilClassListener, model, baseTestDirectory, indicator)
181
+ createUtilityClassIfNeeded (utilClassListener, model, baseTestDirectory, indicator)
174
182
run (THREAD_POOL , indicator, " Generate summary Sarif report" ) {
175
- proceedTestReport(proccess , model)
183
+ proceedTestReport(process , model)
176
184
val sarifReportsPath =
177
185
model.testModule.getOrCreateSarifReportsPath(model.testSourceRoot)
178
186
UtTestsDialogProcessor .updateIndicator(indicator, UtTestsDialogProcessor .ProgressRange .SARIF , " Merge Sarif reports" , 0.75 )
@@ -181,7 +189,7 @@ object CodeGenerationController {
181
189
UtTestsDialogProcessor .updateIndicator(indicator, UtTestsDialogProcessor .ProgressRange .SARIF , " Start tests with coverage" , 0.95 )
182
190
RunConfigurationHelper .runTestsWithCoverage(model, testFilesPointers)
183
191
}
184
- proccess .terminate()
192
+ process .terminate()
185
193
UtTestsDialogProcessor .updateIndicator(indicator, UtTestsDialogProcessor .ProgressRange .SARIF , " Generation finished" , 1.0 )
186
194
187
195
run (EDT_LATER , null , " Run sarif-based inspections" ) {
@@ -232,7 +240,7 @@ object CodeGenerationController {
232
240
)
233
241
}
234
242
}
235
- private fun createUtilityClassIfNeed (
243
+ private fun createUtilityClassIfNeeded (
236
244
utilClassListener : UtilClassListener ,
237
245
model : GenerateTestsModel ,
238
246
baseTestDirectory : PsiDirectory ,
0 commit comments