Index: test/cctest/test-api.cc |
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc |
index a116e1762de47a8f73986786ad8d20499aba2d30..aa9f772b416d8393e91762e2024c950cf7d0f966 100644 |
--- a/test/cctest/test-api.cc |
+++ b/test/cctest/test-api.cc |
@@ -21865,6 +21865,37 @@ TEST(EstimatedContextSize) { |
} |
+static int nb_uncaught_exception_callback_calls = 0; |
+ |
+ |
+bool NoAbortOnUncaughtException(v8::Isolate* isolate) { |
+ ++nb_uncaught_exception_callback_calls; |
+ return false; |
+} |
+ |
+ |
+TEST(AbortOnUncaughtExceptionNoAbort) { |
+ v8::Isolate* isolate = CcTest::isolate(); |
+ v8::HandleScope handle_scope(isolate); |
+ v8::Handle<v8::ObjectTemplate> global_template = |
+ v8::ObjectTemplate::New(isolate); |
+ LocalContext env(NULL, global_template); |
+ |
+ i::FLAG_abort_on_uncaught_exception = true; |
+ isolate->SetAbortOnUncaughtExceptionCallback(NoAbortOnUncaughtException); |
+ |
+ CompileRun("function boom() { throw new Error(\"boom\") }"); |
+ |
+ v8::Local<v8::Object> global_object = env->Global(); |
+ v8::Local<v8::Function> foo = |
+ v8::Local<v8::Function>::Cast(global_object->Get(v8_str("boom"))); |
+ |
+ foo->Call(global_object, 0, NULL); |
+ |
+ CHECK_EQ(1, nb_uncaught_exception_callback_calls); |
+} |
+ |
+ |
TEST(AccessCheckedIsConcatSpreadable) { |
i::FLAG_harmony_concat_spreadable = true; |
v8::Isolate* isolate = CcTest::isolate(); |