Index: test/cctest/test-debug.cc |
diff --git a/test/cctest/test-debug.cc b/test/cctest/test-debug.cc |
index 25a75103e3704e5f7938877b8d56fee2ea9b2ffc..b2eb6a960fdf399b6b8b3fe19508720f36e36039 100644 |
--- a/test/cctest/test-debug.cc |
+++ b/test/cctest/test-debug.cc |
@@ -3825,6 +3825,48 @@ TEST(DebugStepFunctionCall) { |
} |
+// Test that step in works with Function.call.apply. |
+TEST(DebugStepFunctionCallApply) { |
+ DebugLocalContext env; |
+ v8::Isolate* isolate = env->GetIsolate(); |
+ v8::HandleScope scope(isolate); |
+ |
+ // Create a function for testing stepping. |
+ v8::Local<v8::Function> foo = |
+ CompileFunction(&env, |
+ "function bar() { }" |
+ "function foo(){ debugger;" |
+ " Function.call.apply(bar);" |
+ " Function.call.apply(Function.call, " |
+ "[Function.call, bar]);" |
+ "}", |
+ "foo"); |
+ |
+ // Register a debug event listener which steps and counts. |
+ v8::Debug::SetDebugEventListener(DebugEventStep); |
+ step_action = StepIn; |
+ |
+ break_point_hit_count = 0; |
+ foo->Call(env->Global(), 0, NULL); |
+ CHECK_EQ(5, break_point_hit_count); |
+ |
+ v8::Debug::SetDebugEventListener(NULL); |
+ CheckDebuggerUnloaded(); |
+ |
+ // Register a debug event listener which just counts. |
+ v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount); |
+ |
+ break_point_hit_count = 0; |
+ foo->Call(env->Global(), 0, NULL); |
+ |
+ // Without stepping only the debugger statement is hit. |
+ CHECK_EQ(1, break_point_hit_count); |
+ |
+ v8::Debug::SetDebugEventListener(NULL); |
+ CheckDebuggerUnloaded(); |
+} |
+ |
+ |
// Tests that breakpoint will be hit if it's set in script. |
TEST(PauseInScript) { |
DebugLocalContext env; |