1
1
package org.utbot.intellij.plugin.generator
2
2
3
- import com.intellij.openapi.application.ApplicationManager
4
- import com.intellij.openapi.application.PathManager
5
- import com.intellij.openapi.application.ReadAction
6
- import com.intellij.openapi.application.invokeLater
3
+ import com.intellij.openapi.application.*
7
4
import com.intellij.openapi.compiler.CompilerPaths
8
5
import com.intellij.openapi.components.service
9
6
import com.intellij.openapi.module.Module
@@ -166,7 +163,12 @@ object UtTestsDialogProcessor {
166
163
val psi2KClass = mutableMapOf<PsiClass , ClassId >()
167
164
var processedClasses = 0
168
165
val totalClasses = model.srcClasses.size
169
- val process = EngineProcess .createBlocking(project)
166
+ val classNameToPath = runReadAction {
167
+ model.srcClasses.map { psiClass ->
168
+ psiClass.canonicalName to psiClass.containingFile.virtualFile.canonicalPath
169
+ }.toMap()
170
+ }
171
+ val process = EngineProcess .createBlocking(project, classNameToPath)
170
172
171
173
process.terminateOnException { _ ->
172
174
process.setupUtContext(buildDirs + classpathList)
@@ -191,12 +193,14 @@ object UtTestsDialogProcessor {
191
193
}
192
194
}
193
195
194
- val (methods, className ) = process.executeWithTimeoutSuspended {
196
+ val (methods, classNameForLog ) = process.executeWithTimeoutSuspended {
195
197
var canonicalName = " "
196
198
var srcMethods: List <MemberInfo > = emptyList()
199
+ var srcNameForLog: String? = null
197
200
DumbService .getInstance(project)
198
201
.runReadActionInSmartMode(Computable {
199
202
canonicalName = srcClass.canonicalName
203
+ srcNameForLog = srcClass.name
200
204
srcMethods = if (model.extractMembersFromSrcClasses) {
201
205
val chosenMethods =
202
206
model.selectedMembers.filter { it.member is PsiMethod }
@@ -214,11 +218,11 @@ object UtTestsDialogProcessor {
214
218
process.findMethodsInClassMatchingSelected(
215
219
classId,
216
220
srcMethods
217
- ) to srcClass.name
221
+ ) to srcNameForLog
218
222
}
219
223
220
224
if (methods.isEmpty()) {
221
- logger.error { " No methods matching selected found in class $className ." }
225
+ logger.error { " No methods matching selected found in class $classNameForLog ." }
222
226
continue
223
227
}
224
228
@@ -227,7 +231,7 @@ object UtTestsDialogProcessor {
227
231
updateIndicator(
228
232
indicator,
229
233
ProgressRange .SOLVING ,
230
- " Generate test cases for class $className " ,
234
+ " Generate test cases for class $classNameForLog " ,
231
235
processedClasses.toDouble() / totalClasses
232
236
)
233
237
@@ -250,7 +254,7 @@ object UtTestsDialogProcessor {
250
254
updateIndicator(
251
255
indicator,
252
256
ProgressRange .SOLVING ,
253
- " Generate test cases for class $className " ,
257
+ " Generate test cases for class $classNameForLog " ,
254
258
(processedClasses.toDouble() + innerTimeoutRatio) / totalClasses
255
259
)
256
260
}, 0 , 500 , TimeUnit .MILLISECONDS )
@@ -273,16 +277,16 @@ object UtTestsDialogProcessor {
273
277
if (rdGenerateResult.notEmptyCases == 0 ) {
274
278
if (! indicator.isCanceled) {
275
279
if (model.srcClasses.size > 1 ) {
276
- logger.error { " Failed to generate any tests cases for class $className " }
280
+ logger.error { " Failed to generate any tests cases for class $classNameForLog " }
277
281
} else {
278
282
showErrorDialogLater(
279
283
model.project,
280
- errorMessage(className , secondsTimeout),
281
- title = " Failed to generate unit tests for class $className "
284
+ errorMessage(classNameForLog , secondsTimeout),
285
+ title = " Failed to generate unit tests for class $classNameForLog "
282
286
)
283
287
}
284
288
} else {
285
- logger.warn { " Generation was cancelled for class $className " }
289
+ logger.warn { " Generation was cancelled for class $classNameForLog " }
286
290
}
287
291
} else {
288
292
testSetsByClass[srcClass] = rdGenerateResult
0 commit comments