Debugger Tests: create context in onBreakpoint method
This commit is contained in:
@@ -27,6 +27,9 @@ import org.jetbrains.kotlin.idea.JetJdkAndLibraryProjectDescriptor
|
||||
import com.intellij.openapi.roots.JdkOrderEntry
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import com.intellij.debugger.SourcePosition
|
||||
import kotlin.properties.Delegates
|
||||
import com.intellij.debugger.engine.evaluation.EvaluationContextImpl
|
||||
import com.intellij.debugger.impl.DebuggerContextImpl
|
||||
|
||||
abstract class KotlinDebuggerTestBase : KotlinDebuggerTestCase() {
|
||||
|
||||
@@ -35,6 +38,7 @@ abstract class KotlinDebuggerTestBase : KotlinDebuggerTestCase() {
|
||||
|
||||
protected fun onBreakpoint(doOnBreakpoint: SuspendContextImpl.() -> Unit) {
|
||||
super.onBreakpoint {
|
||||
initContexts(it)
|
||||
it.printContext()
|
||||
it.doOnBreakpoint()
|
||||
}
|
||||
@@ -44,6 +48,14 @@ abstract class KotlinDebuggerTestBase : KotlinDebuggerTestCase() {
|
||||
this.stepInto(false, null)
|
||||
}
|
||||
|
||||
protected var evaluationContext: EvaluationContextImpl by Delegates.notNull()
|
||||
protected var debuggerContext: DebuggerContextImpl by Delegates.notNull()
|
||||
|
||||
protected fun initContexts(suspendContext: SuspendContextImpl) {
|
||||
evaluationContext = createEvaluationContext(suspendContext)
|
||||
debuggerContext = createDebuggerContext(suspendContext)
|
||||
}
|
||||
|
||||
protected fun SuspendContextImpl.stepInto(ignoreFilters: Boolean, smartStepFilter: MethodFilter?) {
|
||||
dp.getManagerThread()!!.schedule(dp.createStepIntoCommand(this, ignoreFilters, smartStepFilter))
|
||||
}
|
||||
|
||||
+3
-4
@@ -219,12 +219,11 @@ public abstract class AbstractKotlinEvaluateExpressionTest : KotlinDebuggerTestB
|
||||
val tree = FrameVariablesTree(getProject()!!)
|
||||
Disposer.register(getTestRootDisposable()!!, tree);
|
||||
|
||||
val debuggerContext = createDebuggerContext(this)
|
||||
invokeRatherLater(this) {
|
||||
tree.rebuild(debuggerContext)
|
||||
expandAll(tree, Runnable {
|
||||
try {
|
||||
Printer(debuggerContext).printTree(tree)
|
||||
Printer().printTree(tree)
|
||||
}
|
||||
finally {
|
||||
resume(this@printFrame)
|
||||
@@ -233,7 +232,7 @@ public abstract class AbstractKotlinEvaluateExpressionTest : KotlinDebuggerTestB
|
||||
}
|
||||
}
|
||||
|
||||
private inner class Printer(val debuggerContext: DebuggerContextImpl) {
|
||||
private inner class Printer() {
|
||||
fun printTree(tree: DebuggerTree) {
|
||||
val root = tree.getMutableModel()!!.getRoot() as DebuggerTreeNodeImpl
|
||||
printNode(root, 0)
|
||||
@@ -324,7 +323,7 @@ public abstract class AbstractKotlinEvaluateExpressionTest : KotlinDebuggerTestB
|
||||
|
||||
if (evaluator == null) throw AssertionError("Cannot create an Evaluator for Evaluate Expression")
|
||||
|
||||
val value = evaluator.evaluate(createEvaluationContext(this))
|
||||
val value = evaluator.evaluate(evaluationContext)
|
||||
val actualResult = value.asValue().asString()
|
||||
|
||||
Assert.assertTrue("Evaluate expression returns wrong result for $text:\nexpected = $expectedResult\nactual = $actualResult\n", expectedResult == actualResult)
|
||||
|
||||
Reference in New Issue
Block a user