1 package kotlinx.coroutines.debug.junit4
2 
3 import kotlinx.coroutines.debug.*
4 import org.junit.runner.*
5 import org.junit.runners.model.*
6 import java.util.concurrent.*
7 
8 internal class CoroutinesTimeoutStatement(
9     private val testStatement: Statement,
10     private val testDescription: Description,
11     private val testTimeoutMs: Long,
12     private val cancelOnTimeout: Boolean = false
13 ) : Statement() {
14 
evaluatenull15     override fun evaluate() {
16         try {
17             runWithTimeoutDumpingCoroutines(testDescription.methodName, testTimeoutMs, cancelOnTimeout,
18                 { TestTimedOutException(testTimeoutMs, TimeUnit.MILLISECONDS) })
19             {
20                 testStatement.evaluate()
21             }
22         } finally {
23             DebugProbes.uninstall()
24         }
25     }
26 }
27