Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(395)

Unified Diff: test/mjsunit/es6/reject-caught-by-default-reject-handler.js

Issue 461023002: Ignore default reject handler when looking for reject handlers. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: test/mjsunit/es6/reject-caught-by-default-reject-handler.js
diff --git a/test/mjsunit/es6/debug-promises/reject-uncaught-late.js b/test/mjsunit/es6/reject-caught-by-default-reject-handler.js
similarity index 63%
copy from test/mjsunit/es6/debug-promises/reject-uncaught-late.js
copy to test/mjsunit/es6/reject-caught-by-default-reject-handler.js
index 4a883da13a793972d00fd2f4a9f8311b15b04811..7760b0eb4cfbb3ffad0f07dac3c13e7918204328 100644
--- a/test/mjsunit/es6/debug-promises/reject-uncaught-late.js
+++ b/test/mjsunit/es6/reject-caught-by-default-reject-handler.js
@@ -10,24 +10,27 @@
Debug = debug.Debug;
-var expected_events = 1;
+var expected_events = 2;
var log = [];
-var reject_closure;
-
-var p = new Promise(function(resolve, reject) {
- log.push("postpone p");
- reject_closure = reject;
+var resolve, reject;
+var p0 = new Promise(function(res, rej) { resolve = res; reject = rej; });
+var p1 = p0.then(function() {
+ log.push("p0.then");
+ return Promise.reject(new Error("123"));
+});
+var p2 = p1.then(function() {
+ log.push("p1.then");
});
-var q = new Promise(function(resolve, reject) {
+var q = new Promise(function(res, rej) {
log.push("resolve q");
- resolve();
+ res();
});
q.then(function() {
- log.push("reject p");
- reject_closure(new Error("uncaught reject p")); // event
+ log.push("resolve p");
+ resolve();
})
@@ -36,12 +39,17 @@ function listener(event, exec_state, event_data, data) {
if (event == Debug.DebugEvent.Exception) {
expected_events--;
assertTrue(expected_events >= 0);
- assertEquals("uncaught reject p", event_data.exception().message);
- assertTrue(event_data.promise() instanceof Promise);
- assertSame(p, event_data.promise());
assertTrue(event_data.uncaught());
- // Assert that the debug event is triggered at the throw site.
- assertTrue(exec_state.frame(0).sourceLineText().indexOf("// event") > 0);
+ assertTrue(event_data.promise() instanceof Promise);
+ if (expected_events == 1) {
+ // p1 is rejected, uncaught except for its default reject handler.
+ assertEquals(0, exec_state.frameCount());
Yang 2014/08/12 13:28:35 Note that this is because the promise is rejected
+ assertSame(p1, event_data.promise());
+ } else {
+ // p2 is rejected by p1's default reject handler.
+ assertEquals(0, exec_state.frameCount());
+ assertSame(p2, event_data.promise());
+ }
}
} catch (e) {
%AbortJS(e + "\n" + e.stack);
@@ -58,7 +66,7 @@ function testDone(iteration) {
try {
assertTrue(iteration < 10);
if (expected_events === 0) {
- assertEquals(["postpone p", "resolve q", "end main", "reject p"], log);
+ assertEquals(["resolve q", "end main", "resolve p", "p0.then"], log);
aandrey 2014/08/13 11:03:04 should there be "p1.then" as well?
Yang 2014/08/13 11:13:49 No. That code path is never taken, since p1 is rej
} else {
testDone(iteration + 1);
}

Powered by Google App Engine
This is Rietveld 408576698