diff options
Diffstat (limited to 'deps/v8/test/debugger/debug/es6/debug-promises/stepin-handler.js')
-rw-r--r-- | deps/v8/test/debugger/debug/es6/debug-promises/stepin-handler.js | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/deps/v8/test/debugger/debug/es6/debug-promises/stepin-handler.js b/deps/v8/test/debugger/debug/es6/debug-promises/stepin-handler.js new file mode 100644 index 0000000000..721423a968 --- /dev/null +++ b/deps/v8/test/debugger/debug/es6/debug-promises/stepin-handler.js @@ -0,0 +1,59 @@ +// Copyright 2015 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --noalways-opt +// Tests stepping into through Promises. + +Debug = debug.Debug +var exception = null; +var break_count = 0; +const expected_breaks = 9; + +function listener(event, exec_state, event_data, data) { + try { + if (event == Debug.DebugEvent.Break) { + assertTrue(exec_state.frameCount() != 0, "FAIL: Empty stack trace"); + var source = exec_state.frame(0).sourceLineText(); + print("paused at: " + source); + assertTrue(source.indexOf("// Break " + break_count + ".") > 0, + "Unexpected pause at: " + source + "\n" + + "Expected: // Break " + break_count + "."); + ++break_count; + if (break_count !== expected_breaks) { + exec_state.prepareStep(Debug.StepAction.StepIn); + } + } + } catch(e) { + exception = e; + print(e, e.stack); + } +}; + +Debug.setListener(listener); + +Promise.resolve(42) + .then( + function f0() { + debugger; // Break 0. + } // Break 1. + ) + .then(callback) + .then(callback.bind(null)) + .then(Object) + .then(callback.bind(null).bind(null)) + .then(finalize) + .catch(function(err) { + %AbortJS("FAIL: " + err); + }); + +function callback(x) { + return x; // Break 2. // Break 4. // Break 6. +} // Break 3. // Break 5. // Break 7. + +function finalize() { + assertNull(exception); // Break 8. + assertEquals(expected_breaks, break_count); + + Debug.setListener(null); +} |