Skip to content

Exception in plugin when generating tests for Kotlin code #729

Closed
@volivan239

Description

@volivan239

Description

Launching UTBot on methods from Kotlin code repeatedly gives the same exception.

To Reproduce

Create any file in Kotlin and launch plugin on A.f() from the example below:

public class A {
    fun f(): Int {
        return 2
    }
}

fun main(args: Array<String>) {}

Expected behavior

Tests are generated with no exceptions.

Actual behavior

Tests are generated correctly, but java.lang.Throwable: Read access is allowed from event dispatch thread or inside read-action only is produced.

Visual proofs (screenshots, logs, images)

Details: Current thread: Thread[ApplicationImpl pooled thread 11,4,Idea Thread Group] 354081768
; dispatch thread: false; isDispatchThread(): false
SystemEventQueueThread: Thread[AWT-EventQueue-0,6,Idea Thread Group] 558590277

java.lang.Throwable: Read access is allowed from event dispatch thread or inside read-action only (see com.intellij.openapi.application.Application.runReadAction())
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:161)
	at com.intellij.openapi.application.impl.ApplicationImpl.assertReadAccessAllowed(ApplicationImpl.java:1013)
	at com.intellij.psi.impl.source.PsiFileImpl.assertReadAccessAllowed(PsiFileImpl.java:183)
	at com.intellij.psi.impl.source.PsiFileImpl.getStubTree(PsiFileImpl.java:615)
	at com.intellij.psi.impl.source.SpineRef.getStub(SpineRef.java:32)
	at com.intellij.extapi.psi.StubBasedPsiElementBase.getStub(StubBasedPsiElementBase.java:363)
	at org.jetbrains.kotlin.psi.KtNamedDeclarationStub.getName(KtNamedDeclarationStub.java:56)
	at org.jetbrains.kotlin.psi.KtTypeParameterListOwnerStub.getName(KtTypeParameterListOwnerStub.java:29)
	at org.jetbrains.kotlin.psi.KtNamedDeclarationStub.getNameAsName(KtNamedDeclarationStub.java:73)
	at org.jetbrains.kotlin.psi.KtTypeParameterListOwnerStub.getNameAsName(KtTypeParameterListOwnerStub.java:29)
	at org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration.getName(KtLightClassForSourceDeclaration.kt:198)
	at org.utbot.intellij.plugin.generator.UtTestsDialogProcessor$createTests$2$1.run(UtTestsDialogProcessor.kt:167)
	at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:935)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressAsync$5(CoreProgressManager.java:442)
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$3(ProgressRunner.java:235)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:170)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:629)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:581)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:157)
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:235)
	at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1604)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:652)
	at java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:649)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:649)
	at java.lang.Thread.run(Thread.java:750)

Environment

Java 1.8, JUnit5, Mockito, Mockito static mocking, Not parametrized

Additional context

The only link to our code in stacktrace seems to be UtTestsDialogProcessor.kt:167 (val className = srcClass.name)

Metadata

Metadata

Assignees

Labels

comp-uiImprovements of plugin UI appearence and functionalityctg-bugIssue is a buglang-kotlinIssue is related to Kotlin language supportstatus-verifiedBug fix is verified

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions