diff options
Diffstat (limited to 'deps/v8/test/mjsunit/es6/debug-promises/promise-race-uncaught.js')
-rw-r--r-- | deps/v8/test/mjsunit/es6/debug-promises/promise-race-uncaught.js | 45 |
1 files changed, 21 insertions, 24 deletions
diff --git a/deps/v8/test/mjsunit/es6/debug-promises/promise-race-uncaught.js b/deps/v8/test/mjsunit/es6/debug-promises/promise-race-uncaught.js index 57955c01ef..ed6233bc30 100644 --- a/deps/v8/test/mjsunit/es6/debug-promises/promise-race-uncaught.js +++ b/deps/v8/test/mjsunit/es6/debug-promises/promise-race-uncaught.js @@ -6,28 +6,16 @@ // Test debug events when we only listen to uncaught exceptions and a // Promise p3 created by Promise.race has no catch handler, and is rejected -// because one of the Promises p2 passed to Promise.all is rejected. We -// expect two Exception debug events to be triggered, for p2 and p3 each, -// because neither has an user-defined catch handler. +// because one of the Promises p2 passed to Promise.race is rejected. +// We expect one event for p2; the system recognizes the rejection of p3 +// to be redundant and based on the rejection of p2 and does not trigger +// an additional rejection. var Debug = debug.Debug; -var expected_events = 2; +var expected_events = 1; var log = []; -var p1 = Promise.resolve(); -p1.name = "p1"; - -var p2 = p1.then(function() { - log.push("throw"); - throw new Error("uncaught"); // event -}); - -p2.name = "p2"; - -var p3 = Promise.race([p2]); -p3.name = "p3"; - function listener(event, exec_state, event_data, data) { if (event != Debug.DebugEvent.Exception) return; try { @@ -35,13 +23,9 @@ function listener(event, exec_state, event_data, data) { assertTrue(expected_events >= 0); assertEquals("uncaught", event_data.exception().message); assertTrue(event_data.promise() instanceof Promise); - if (expected_events === 1) { - // Assert that the debug event is triggered at the throw site. - assertTrue(exec_state.frame(0).sourceLineText().indexOf("// event") > 0); - assertEquals("p2", event_data.promise().name); - } else { - assertEquals("p3", event_data.promise().name); - } + // Assert that the debug event is triggered at the throw site. + assertTrue(exec_state.frame(0).sourceLineText().indexOf("// event") > 0); + assertEquals("p2", event_data.promise().name); assertTrue(event_data.uncaught()); } catch (e) { %AbortJS(e + "\n" + e.stack); @@ -51,6 +35,19 @@ function listener(event, exec_state, event_data, data) { Debug.setBreakOnUncaughtException(); Debug.setListener(listener); +var p1 = Promise.resolve(); +p1.name = "p1"; + +var p2 = p1.then(function() { + log.push("throw"); + throw new Error("uncaught"); // event +}); + +p2.name = "p2"; + +var p3 = Promise.race([p2]); +p3.name = "p3"; + log.push("end main"); function testDone(iteration) { |