From d60585c3abe57e98ce93e95048420bc1b768ec0e Mon Sep 17 00:00:00 2001 From: Sergey Karashevich Date: Tue, 22 May 2018 14:08:26 +0300 Subject: [PATCH] [gui-test] fix double invoking for FirstStart#completeIntallation --- .../testGuiFramework/impl/FirstStart.kt | 6 ----- .../testGuiFramework/impl/FirstStarter.kt | 24 +++++++------------ 2 files changed, 9 insertions(+), 21 deletions(-) diff --git a/platform/testGuiFramework/src/com/intellij/testGuiFramework/impl/FirstStart.kt b/platform/testGuiFramework/src/com/intellij/testGuiFramework/impl/FirstStart.kt index 19173488eeaa..45c53daa8e4f 100644 --- a/platform/testGuiFramework/src/com/intellij/testGuiFramework/impl/FirstStart.kt +++ b/platform/testGuiFramework/src/com/intellij/testGuiFramework/impl/FirstStart.kt @@ -86,12 +86,6 @@ abstract class FirstStart(val ideType: IdeType) { companion object { var DEFAULT_TIMEOUT: Long = GuiTestCase().defaultTimeout - - fun guessIdeAndStartRobot() { - val firstStartClass = System.getProperty("idea.gui.test.first.start.class") - val firstStart = Class.forName(firstStartClass).newInstance() as FirstStart - firstStart.completeInstallation() - } } private fun completeFirstStart() { diff --git a/platform/testGuiFramework/src/com/intellij/testGuiFramework/impl/FirstStarter.kt b/platform/testGuiFramework/src/com/intellij/testGuiFramework/impl/FirstStarter.kt index 005f8cfb336d..b8cc5a725323 100644 --- a/platform/testGuiFramework/src/com/intellij/testGuiFramework/impl/FirstStarter.kt +++ b/platform/testGuiFramework/src/com/intellij/testGuiFramework/impl/FirstStarter.kt @@ -20,9 +20,7 @@ import com.intellij.util.lang.UrlClassLoader import java.net.URL import kotlin.concurrent.thread -class FirstStarter { - -} +class FirstStarter fun main(args: Array) { startRobotRoutine() @@ -42,17 +40,12 @@ private fun startIdeMainRoutine(args: Array) { private fun startRobotRoutine() { val robotClassLoader = createRobotClassLoader() - fun awtIsNotStarted() - = !(Thread.getAllStackTraces().keys.any { thread -> thread.name.toLowerCase().contains("awt-eventqueue") }) + fun awtIsNotStarted() = !(Thread.getAllStackTraces().keys.any { thread -> thread.name.toLowerCase().contains("awt-eventqueue") }) - thread(name = "Wait Awt and Start", contextClassLoader = robotClassLoader) { + thread(name = "GUI Test First Start: Wait AWT and Start", contextClassLoader = robotClassLoader) { while (awtIsNotStarted()) Thread.sleep(100) - val companion = Class.forName("com.intellij.testGuiFramework.impl.FirstStart\$Companion", true, robotClassLoader) - val firstStartClass = Class.forName("com.intellij.testGuiFramework.impl.FirstStart", true, robotClassLoader) - val value = firstStartClass.getField("Companion").get(Any()) - val method = companion.getDeclaredMethod("guessIdeAndStartRobot") - method.isAccessible = true - method.invoke(value) + val firstStartClass = System.getProperty("idea.gui.test.first.start.class") + Class.forName(firstStartClass).newInstance() as FirstStart } } @@ -72,10 +65,11 @@ fun createRobotClassLoader(): UrlClassLoader { fun getUrlOfBaseClassLoader(): List { val classLoader = Thread.currentThread().contextClassLoader val urlClassLoaderClass = classLoader.javaClass - val getUrlsMethod = urlClassLoaderClass.methods.filter { it.name.toLowerCase() == "geturls" }.firstOrNull()!! + val getUrlsMethod = urlClassLoaderClass.methods.firstOrNull { it.name.toLowerCase() == "geturls" } ?: throw Exception( + "Unable to get URLs for UrlClassLoader") @Suppress("UNCHECKED_CAST") val urlsListOrArray = getUrlsMethod.invoke(classLoader) - if (urlsListOrArray is Array<*>) return urlsListOrArray.toList() as List - else return urlsListOrArray as List + return if (urlsListOrArray is Array<*>) urlsListOrArray.toList() as List + else urlsListOrArray as List } \ No newline at end of file