11package org.utbot.intellij.plugin.generator
22
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.*
74import com.intellij.openapi.compiler.CompilerPaths
85import com.intellij.openapi.components.service
96import com.intellij.openapi.module.Module
@@ -166,7 +163,12 @@ object UtTestsDialogProcessor {
166163 val psi2KClass = mutableMapOf<PsiClass , ClassId >()
167164 var processedClasses = 0
168165 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)
170172
171173 process.terminateOnException { _ ->
172174 process.setupUtContext(buildDirs + classpathList)
@@ -191,12 +193,14 @@ object UtTestsDialogProcessor {
191193 }
192194 }
193195
194- val (methods, className ) = process.executeWithTimeoutSuspended {
196+ val (methods, classNameForLog ) = process.executeWithTimeoutSuspended {
195197 var canonicalName = " "
196198 var srcMethods: List <MemberInfo > = emptyList()
199+ var srcNameForLog: String? = null
197200 DumbService .getInstance(project)
198201 .runReadActionInSmartMode(Computable {
199202 canonicalName = srcClass.canonicalName
203+ srcNameForLog = srcClass.name
200204 srcMethods = if (model.extractMembersFromSrcClasses) {
201205 val chosenMethods =
202206 model.selectedMembers.filter { it.member is PsiMethod }
@@ -214,11 +218,11 @@ object UtTestsDialogProcessor {
214218 process.findMethodsInClassMatchingSelected(
215219 classId,
216220 srcMethods
217- ) to srcClass.name
221+ ) to srcNameForLog
218222 }
219223
220224 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 ." }
222226 continue
223227 }
224228
@@ -227,7 +231,7 @@ object UtTestsDialogProcessor {
227231 updateIndicator(
228232 indicator,
229233 ProgressRange .SOLVING ,
230- " Generate test cases for class $className " ,
234+ " Generate test cases for class $classNameForLog " ,
231235 processedClasses.toDouble() / totalClasses
232236 )
233237
@@ -250,7 +254,7 @@ object UtTestsDialogProcessor {
250254 updateIndicator(
251255 indicator,
252256 ProgressRange .SOLVING ,
253- " Generate test cases for class $className " ,
257+ " Generate test cases for class $classNameForLog " ,
254258 (processedClasses.toDouble() + innerTimeoutRatio) / totalClasses
255259 )
256260 }, 0 , 500 , TimeUnit .MILLISECONDS )
@@ -273,16 +277,16 @@ object UtTestsDialogProcessor {
273277 if (rdGenerateResult.notEmptyCases == 0 ) {
274278 if (! indicator.isCanceled) {
275279 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 " }
277281 } else {
278282 showErrorDialogLater(
279283 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 "
282286 )
283287 }
284288 } else {
285- logger.warn { " Generation was cancelled for class $className " }
289+ logger.warn { " Generation was cancelled for class $classNameForLog " }
286290 }
287291 } else {
288292 testSetsByClass[srcClass] = rdGenerateResult
0 commit comments