Description
Generate Tests button should be disabled when plugin action is called in a project with JDK version 17+.
Warning is present on action dialog for JDK 19.
But Generate Tests button is enabled and can be clicked.
Then exception is thrown by UnitTestBot down to IDEA.
To Reproduce
- Install UnitTestBot plugin built from main in IntelliJ IDEA
- Open/create IntelliJ project with JDK 19
- Call UnitTestBot action on a Java class
- Click
Generate Tests or Generate and Run
Expected behavior
Generate Tests button should be disabled for a project with JDK version 17+.
Actual behavior
Generate Tests button is enabled
- IllegalArgumentException is thrown during test generation
Screenshots, logs

com.jetbrains.rd.util.reactive.RdFault: Unsupported class file major version 63, reason: java.lang.IllegalArgumentException: Unsupported class file major version 63
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:199)
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:180)
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:166)
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:287)
at soot.asm.AsmClassSource.resolve(AsmClassSource.java:66)
at soot.SootResolver.bringToHierarchyUnchecked(SootResolver.java:274)
at soot.SootResolver.bringToHierarchy(SootResolver.java:243)
at soot.SootResolver.bringToSignatures(SootResolver.java:313)
at soot.SootResolver.bringToBodies(SootResolver.java:353)
at soot.SootResolver.processResolveWorklist(SootResolver.java:190)
at soot.SootResolver.resolveClass(SootResolver.java:155)
at soot.Scene.tryLoadClass(Scene.java:989)
at soot.Scene.loadBasicClasses(Scene.java:1830)
at soot.Scene.loadNecessaryClasses(Scene.java:1949)
at org.utbot.framework.util.SootUtilsKt.initSoot(SootUtils.kt:90)
at org.utbot.framework.util.SootUtilsKt.access$initSoot(SootUtils.kt:1)
at org.utbot.framework.util.SootUtils.runSoot(SootUtils.kt:45)
at org.utbot.framework.plugin.api.TestCaseGenerator.<init>(TestCaseGenerator.kt:84)
at org.utbot.framework.plugin.api.TestCaseGenerator.<init>(TestCaseGenerator.kt:56)
at org.utbot.framework.process.EngineProcessMainKt$setup$3.invoke(EngineProcessMain.kt:105)
at org.utbot.framework.process.EngineProcessMainKt$setup$3.invoke(EngineProcessMain.kt:100)
at org.utbot.rd.IdleWatchdog$measureTimeForActiveCall$1$2$1.invoke(ClientProcessUtil.kt:115)
at org.utbot.rd.IdleWatchdog.wrapActive(ClientProcessUtil.kt:88)
at org.utbot.rd.IdleWatchdog$measureTimeForActiveCall$1.invoke(ClientProcessUtil.kt:114)
at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182)
at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182)
at com.jetbrains.rd.framework.impl.RdCall.onWireReceived(RdTask.kt:362)
at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:57)
at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:56)
at com.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:148)
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:56)
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:54)
at com.jetbrains.rd.util.threading.SingleThreadSchedulerBase.queue$lambda-3(SingleThreadScheduler.kt:41)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1589)
at com.jetbrains.rd.framework.RdTaskResult$Companion.read(TaskInterfaces.kt:30)
at com.jetbrains.rd.framework.impl.CallSiteWiredRdTask.onWireReceived(RdTask.kt:106)
at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:57)
at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:56)
at com.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:148)
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:56)
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:54)
at com.jetbrains.rd.framework.impl.RdCall$createResponseScheduler$1.queue$execute(RdTask.kt:280)
at com.jetbrains.rd.framework.impl.RdCall$createResponseScheduler$1.access$queue$execute(RdTask.kt:269)
at com.jetbrains.rd.framework.impl.RdCall$createResponseScheduler$1$queue$1.invokeSuspend(RdTask.kt:289)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284)
at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
at org.utbot.rd.UtRdUtilKt.startBlocking(UtRdUtil.kt:31)
at org.utbot.intellij.plugin.process.EngineProcess.createTestGenerator(EngineProcess.kt:199)
at org.utbot.intellij.plugin.generator.UtTestsDialogProcessor$createTests$1$1.run(UtTestsDialogProcessor.kt:275)
at com.intellij.openapi.progress.impl.CoreProgressManager.startTask(CoreProgressManager.java:429)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.startTask(ProgressManagerImpl.java:114)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressAsynchronously$6(CoreProgressManager.java:480)
at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$3(ProgressRunner.java:252)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:186)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:604)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:679)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:635)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:603)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:173)
at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:252)
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
at java.base/java.lang.Thread.run(Thread.java:833)
Environment
IntelliJ IDEA version - 2023.1
Project - IntelliJ
JDK - 19
Additional context
Description
Generate Testsbutton should be disabled when plugin action is called in a project with JDK version 17+.Warning is present on action dialog for JDK 19.
But
Generate Testsbutton is enabled and can be clicked.Then exception is thrown by UnitTestBot down to IDEA.
To Reproduce
Generate TestsorGenerate and RunExpected behavior
Generate Testsbutton should be disabled for a project with JDK version 17+.Actual behavior
Generate Testsbutton is enabledScreenshots, logs
Environment
IntelliJ IDEA version - 2023.1
Project - IntelliJ
JDK - 19
Additional context