Skip to content

Commit 7c7e0ce

Browse files
[lambda tests] AT-3596 Invoke IDE application cleanup
GitOrigin-RevId: 00df5fbd0272fe24eebb820643772fcd178fd1f4
1 parent 8357b60 commit 7c7e0ce

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

tools/intellij.lambda.testFramework/src/com/intellij/lambda/testFramework/junit/BackgroundLambdaCleanupAfterEach.kt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
package com.intellij.lambda.testFramework.junit
22

3+
import com.intellij.ide.starter.coroutine.perTestSupervisorScope
4+
import com.intellij.ide.starter.utils.catchAll
35
import com.intellij.lambda.testFramework.starter.IdeInstance
6+
import com.intellij.openapi.application.ApplicationManager
7+
import com.intellij.testFramework.common.cleanApplicationState
48
import com.intellij.tools.ide.util.common.starterLogger
9+
import kotlinx.coroutines.runBlocking
10+
import kotlinx.coroutines.withTimeout
511
import org.junit.jupiter.api.extension.AfterEachCallback
612
import org.junit.jupiter.api.extension.ExtensionContext
13+
import kotlin.time.Duration.Companion.seconds
714

815
/**
916
* Ensures `BackgroundRunWithLambda.cleanUp()` is executed automatically after each test.
@@ -14,6 +21,26 @@ import org.junit.jupiter.api.extension.ExtensionContext
1421
class BackgroundLambdaCleanupAfterEach : AfterEachCallback {
1522
override fun afterEach(context: ExtensionContext) {
1623
starterLogger<BackgroundLambdaCleanupAfterEach>().info("Cleaning up Lambda test session(s) after test: ${context.displayName}")
24+
25+
invokeIdeApplicationCleanup()
1726
IdeInstance.cleanup()
1827
}
28+
29+
private fun invokeIdeApplicationCleanup() {
30+
@Suppress("RAW_RUN_BLOCKING")
31+
runBlocking(perTestSupervisorScope.coroutineContext) {
32+
withTimeout(5.seconds) {
33+
catchAll("Invoking test application cleanup") {
34+
IdeInstance.ide.apply {
35+
run("IDE test application cleanup") {
36+
ApplicationManager.getApplication().cleanApplicationState()
37+
}
38+
runInBackend("IDE test application cleanup") {
39+
ApplicationManager.getApplication().cleanApplicationState()
40+
}
41+
}
42+
}
43+
}
44+
}
45+
}
1946
}

tools/intellij.lambda.testFramework/src/com/intellij/lambda/testFramework/starter/IdeInstance.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import com.intellij.lambda.testFramework.utils.IdeLambdaStarter.runIdeWithLambda
1212
import com.intellij.lambda.testFramework.utils.LambdaTestPluginHolder
1313
import com.intellij.tools.ide.util.common.starterLogger
1414
import kotlinx.coroutines.runBlocking
15+
import kotlinx.coroutines.withTimeout
16+
import kotlin.time.Duration.Companion.seconds
1517

1618
private val LOG = starterLogger<IdeInstance>()
1719

@@ -66,8 +68,10 @@ object IdeInstance {
6668
fun cleanup() = synchronized(this) {
6769
@Suppress("RAW_RUN_BLOCKING")
6870
runBlocking(testSuiteSupervisorScope.coroutineContext) {
69-
catchAll("IDE instance cleanup") {
70-
ide.cleanUp()
71+
withTimeout(5.seconds) {
72+
catchAll("IDE instance cleanup") {
73+
ide.cleanUp()
74+
}
7175
}
7276
}
7377
}

0 commit comments

Comments
 (0)