MPP: Fix JPS tests

Move back the application check as only the class presence check is not sufficient.

Original commit: bbc73ec0e5
This commit is contained in:
Yan Zhulanow
2018-09-25 22:07:37 +03:00
parent f6530a4811
commit b147abbf53
@@ -5,9 +5,24 @@
package org.jetbrains.kotlin.config
private const val IDE_EVENT_QUEUE_CLASS_NAME = "com.intellij.ide.IdeEventQueue"
import com.intellij.openapi.application.ApplicationManager
private const val APPLICATION_MANAGER_CLASS_NAME = "com.intellij.openapi.application.ApplicationManager"
val isJps: Boolean by lazy {
val ideEventQueueClassPath = IDE_EVENT_QUEUE_CLASS_NAME.replace('.', '/') + ".class"
{}.javaClass.classLoader.getResource(ideEventQueueClassPath) == null
/*
Normally, JPS shouldn't have an ApplicationManager class in the classpath,
but that's not true for JPS inside IDEA right now.
Though Application is not properly initialized inside JPS so we can use it as a check.
*/
return@lazy if (doesClassExist(APPLICATION_MANAGER_CLASS_NAME)) {
ApplicationManager.getApplication() == null
} else {
true
}
}
private fun doesClassExist(fqName: String): Boolean {
val classPath = fqName.replace('.', '/') + ".class"
return {}.javaClass.classLoader.getResource(classPath) != null
}