Index: test/mjsunit/debug-backtrace.js |
=================================================================== |
--- test/mjsunit/debug-backtrace.js (revision 2397) |
+++ test/mjsunit/debug-backtrace.js (working copy) |
@@ -76,167 +76,166 @@ |
function listener(event, exec_state, event_data, data) { |
try { |
- if (event == Debug.DebugEvent.Break) |
- { |
- // The expected backtrace is |
- // 0: f |
- // 1: m |
- // 2: g |
- // 3: [anonymous] |
- |
- var response; |
- var backtrace; |
- var frame; |
- var source; |
- |
- // Get the debug command processor. |
- var dcp = exec_state.debugCommandProcessor(); |
+ if (event == Debug.DebugEvent.Break) { |
+ // The expected backtrace is |
+ // 0: f |
+ // 1: m |
+ // 2: g |
+ // 3: [anonymous] |
- // Get the backtrace. |
- var json; |
- json = '{"seq":0,"type":"request","command":"backtrace"}' |
- var resp = dcp.processDebugJSONRequest(json); |
- response = new ParsedResponse(resp); |
- backtrace = response.body(); |
- assertEquals(0, backtrace.fromFrame); |
- assertEquals(4, backtrace.toFrame); |
- assertEquals(4, backtrace.totalFrames); |
- var frames = backtrace.frames; |
- assertEquals(4, frames.length); |
- for (var i = 0; i < frames.length; i++) { |
- assertEquals('frame', frames[i].type); |
- } |
- assertEquals(0, frames[0].index); |
- assertEquals("f", response.lookup(frames[0].func.ref).name); |
- assertEquals(1, frames[1].index); |
- assertEquals("", response.lookup(frames[1].func.ref).name); |
- assertEquals("m", response.lookup(frames[1].func.ref).inferredName); |
- assertEquals(2, frames[2].index); |
- assertEquals("g", response.lookup(frames[2].func.ref).name); |
- assertEquals(3, frames[3].index); |
- assertEquals("", response.lookup(frames[3].func.ref).name); |
+ var response; |
+ var backtrace; |
+ var frame; |
+ var source; |
- // Get backtrace with two frames. |
- json = '{"seq":0,"type":"request","command":"backtrace","arguments":{"fromFrame":1,"toFrame":3}}' |
- response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
- backtrace = response.body(); |
- assertEquals(1, backtrace.fromFrame); |
- assertEquals(3, backtrace.toFrame); |
- assertEquals(4, backtrace.totalFrames); |
- var frames = backtrace.frames; |
- assertEquals(2, frames.length); |
- for (var i = 0; i < frames.length; i++) { |
- assertEquals('frame', frames[i].type); |
- } |
- assertEquals(1, frames[0].index); |
- assertEquals("", response.lookup(frames[0].func.ref).name); |
- assertEquals("m", response.lookup(frames[0].func.ref).inferredName); |
- assertEquals(2, frames[1].index); |
- assertEquals("g", response.lookup(frames[1].func.ref).name); |
+ // Get the debug command processor. |
+ var dcp = exec_state.debugCommandProcessor(); |
- // Get backtrace with bottom two frames. |
- json = '{"seq":0,"type":"request","command":"backtrace","arguments":{"fromFrame":0,"toFrame":2, "bottom":true}}' |
- response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
- backtrace = response.body(); |
- assertEquals(2, backtrace.fromFrame); |
- assertEquals(4, backtrace.toFrame); |
- assertEquals(4, backtrace.totalFrames); |
- var frames = backtrace.frames; |
- assertEquals(2, frames.length); |
- for (var i = 0; i < frames.length; i++) { |
- assertEquals('frame', frames[i].type); |
- } |
- assertEquals(2, frames[0].index); |
- assertEquals("g", response.lookup(frames[0].func.ref).name); |
- assertEquals(3, frames[1].index); |
- assertEquals("", response.lookup(frames[1].func.ref).name); |
+ // Get the backtrace. |
+ var json; |
+ json = '{"seq":0,"type":"request","command":"backtrace"}' |
+ var resp = dcp.processDebugJSONRequest(json); |
+ response = new ParsedResponse(resp); |
+ backtrace = response.body(); |
+ assertEquals(0, backtrace.fromFrame); |
+ assertEquals(4, backtrace.toFrame); |
+ assertEquals(4, backtrace.totalFrames); |
+ var frames = backtrace.frames; |
+ assertEquals(4, frames.length); |
+ for (var i = 0; i < frames.length; i++) { |
+ assertEquals('frame', frames[i].type); |
+ } |
+ assertEquals(0, frames[0].index); |
+ assertEquals("f", response.lookup(frames[0].func.ref).name); |
+ assertEquals(1, frames[1].index); |
+ assertEquals("", response.lookup(frames[1].func.ref).name); |
+ assertEquals("m", response.lookup(frames[1].func.ref).inferredName); |
+ assertEquals(2, frames[2].index); |
+ assertEquals("g", response.lookup(frames[2].func.ref).name); |
+ assertEquals(3, frames[3].index); |
+ assertEquals("", response.lookup(frames[3].func.ref).name); |
- // Get the individual frames. |
- json = '{"seq":0,"type":"request","command":"frame"}' |
- response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
- frame = response.body(); |
- assertEquals(0, frame.index); |
- assertEquals("f", response.lookup(frame.func.ref).name); |
- assertTrue(frame.constructCall); |
- assertEquals(31, frame.line); |
- assertEquals(3, frame.column); |
- assertEquals(2, frame.arguments.length); |
- assertEquals('x', frame.arguments[0].name); |
- assertEquals('number', response.lookup(frame.arguments[0].value.ref).type); |
- assertEquals(1, response.lookup(frame.arguments[0].value.ref).value); |
- assertEquals('y', frame.arguments[1].name); |
- assertEquals('undefined', response.lookup(frame.arguments[1].value.ref).type); |
+ // Get backtrace with two frames. |
+ json = '{"seq":0,"type":"request","command":"backtrace","arguments":{"fromFrame":1,"toFrame":3}}' |
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
+ backtrace = response.body(); |
+ assertEquals(1, backtrace.fromFrame); |
+ assertEquals(3, backtrace.toFrame); |
+ assertEquals(4, backtrace.totalFrames); |
+ var frames = backtrace.frames; |
+ assertEquals(2, frames.length); |
+ for (var i = 0; i < frames.length; i++) { |
+ assertEquals('frame', frames[i].type); |
+ } |
+ assertEquals(1, frames[0].index); |
+ assertEquals("", response.lookup(frames[0].func.ref).name); |
+ assertEquals("m", response.lookup(frames[0].func.ref).inferredName); |
+ assertEquals(2, frames[1].index); |
+ assertEquals("g", response.lookup(frames[1].func.ref).name); |
- json = '{"seq":0,"type":"request","command":"frame","arguments":{"number":0}}' |
- response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
- frame = response.body(); |
- assertEquals(0, frame.index); |
- assertEquals("f", response.lookup(frame.func.ref).name); |
- assertEquals(31, frame.line); |
- assertEquals(3, frame.column); |
- assertEquals(2, frame.arguments.length); |
- assertEquals('x', frame.arguments[0].name); |
- assertEquals('number', response.lookup(frame.arguments[0].value.ref).type); |
- assertEquals(1, response.lookup(frame.arguments[0].value.ref).value); |
- assertEquals('y', frame.arguments[1].name); |
- assertEquals('undefined', response.lookup(frame.arguments[1].value.ref).type); |
+ // Get backtrace with bottom two frames. |
+ json = '{"seq":0,"type":"request","command":"backtrace","arguments":{"fromFrame":0,"toFrame":2, "bottom":true}}' |
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
+ backtrace = response.body(); |
+ assertEquals(2, backtrace.fromFrame); |
+ assertEquals(4, backtrace.toFrame); |
+ assertEquals(4, backtrace.totalFrames); |
+ var frames = backtrace.frames; |
+ assertEquals(2, frames.length); |
+ for (var i = 0; i < frames.length; i++) { |
+ assertEquals('frame', frames[i].type); |
+ } |
+ assertEquals(2, frames[0].index); |
+ assertEquals("g", response.lookup(frames[0].func.ref).name); |
+ assertEquals(3, frames[1].index); |
+ assertEquals("", response.lookup(frames[1].func.ref).name); |
- json = '{"seq":0,"type":"request","command":"frame","arguments":{"number":1}}' |
- response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
- frame = response.body(); |
- assertEquals(1, frame.index); |
- assertEquals("", response.lookup(frame.func.ref).name); |
- assertEquals("m", response.lookup(frame.func.ref).inferredName); |
- assertFalse(frame.constructCall); |
- assertEquals(35, frame.line); |
- assertEquals(2, frame.column); |
- assertEquals(0, frame.arguments.length); |
+ // Get the individual frames. |
+ json = '{"seq":0,"type":"request","command":"frame"}' |
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
+ frame = response.body(); |
+ assertEquals(0, frame.index); |
+ assertEquals("f", response.lookup(frame.func.ref).name); |
+ assertTrue(frame.constructCall); |
+ assertEquals(31, frame.line); |
+ assertEquals(3, frame.column); |
+ assertEquals(2, frame.arguments.length); |
+ assertEquals('x', frame.arguments[0].name); |
+ assertEquals('number', response.lookup(frame.arguments[0].value.ref).type); |
+ assertEquals(1, response.lookup(frame.arguments[0].value.ref).value); |
+ assertEquals('y', frame.arguments[1].name); |
+ assertEquals('undefined', response.lookup(frame.arguments[1].value.ref).type); |
- json = '{"seq":0,"type":"request","command":"frame","arguments":{"number":3}}' |
- response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
- frame = response.body(); |
- assertEquals(3, frame.index); |
- assertEquals("", response.lookup(frame.func.ref).name); |
+ json = '{"seq":0,"type":"request","command":"frame","arguments":{"number":0}}' |
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
+ frame = response.body(); |
+ assertEquals(0, frame.index); |
+ assertEquals("f", response.lookup(frame.func.ref).name); |
+ assertEquals(31, frame.line); |
+ assertEquals(3, frame.column); |
+ assertEquals(2, frame.arguments.length); |
+ assertEquals('x', frame.arguments[0].name); |
+ assertEquals('number', response.lookup(frame.arguments[0].value.ref).type); |
+ assertEquals(1, response.lookup(frame.arguments[0].value.ref).value); |
+ assertEquals('y', frame.arguments[1].name); |
+ assertEquals('undefined', response.lookup(frame.arguments[1].value.ref).type); |
- // Source slices for the individual frames (they all refer to this script). |
- json = '{"seq":0,"type":"request","command":"source",' + |
- '"arguments":{"frame":0,"fromLine":30,"toLine":32}}' |
- response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
- source = response.body(); |
- assertEquals("function f(x, y) {", source.source.substring(0, 18)); |
- assertEquals(30, source.fromLine); |
- assertEquals(32, source.toLine); |
- |
- json = '{"seq":0,"type":"request","command":"source",' + |
- '"arguments":{"frame":1,"fromLine":31,"toLine":32}}' |
- response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
- source = response.body(); |
- assertEquals(" a=1;", source.source.substring(0, 6)); |
- assertEquals(31, source.fromLine); |
- assertEquals(32, source.toLine); |
- |
- json = '{"seq":0,"type":"request","command":"source",' + |
- '"arguments":{"frame":2,"fromLine":35,"toLine":36}}' |
- response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
- source = response.body(); |
- assertEquals(" new f(1);", source.source.substring(0, 11)); |
- assertEquals(35, source.fromLine); |
- assertEquals(36, source.toLine); |
- |
- // Test line interval way beyond this script will result in an error. |
- json = '{"seq":0,"type":"request","command":"source",' + |
- '"arguments":{"frame":0,"fromLine":10000,"toLine":20000}}' |
- response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
- assertFalse(response.response().success); |
- |
- // Test without arguments. |
- json = '{"seq":0,"type":"request","command":"source"}' |
- response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
- source = response.body(); |
- assertEquals(Debug.findScript(f).source, source.source); |
- |
- listenerCalled = true; |
- } |
+ json = '{"seq":0,"type":"request","command":"frame","arguments":{"number":1}}' |
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
+ frame = response.body(); |
+ assertEquals(1, frame.index); |
+ assertEquals("", response.lookup(frame.func.ref).name); |
+ assertEquals("m", response.lookup(frame.func.ref).inferredName); |
+ assertFalse(frame.constructCall); |
+ assertEquals(35, frame.line); |
+ assertEquals(2, frame.column); |
+ assertEquals(0, frame.arguments.length); |
+ |
+ json = '{"seq":0,"type":"request","command":"frame","arguments":{"number":3}}' |
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
+ frame = response.body(); |
+ assertEquals(3, frame.index); |
+ assertEquals("", response.lookup(frame.func.ref).name); |
+ |
+ // Source slices for the individual frames (they all refer to this script). |
+ json = '{"seq":0,"type":"request","command":"source",' + |
+ '"arguments":{"frame":0,"fromLine":30,"toLine":32}}' |
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
+ source = response.body(); |
+ assertEquals("function f(x, y) {", source.source.substring(0, 18)); |
+ assertEquals(30, source.fromLine); |
+ assertEquals(32, source.toLine); |
+ |
+ json = '{"seq":0,"type":"request","command":"source",' + |
+ '"arguments":{"frame":1,"fromLine":31,"toLine":32}}' |
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
+ source = response.body(); |
+ assertEquals(" a=1;", source.source.substring(0, 6)); |
+ assertEquals(31, source.fromLine); |
+ assertEquals(32, source.toLine); |
+ |
+ json = '{"seq":0,"type":"request","command":"source",' + |
+ '"arguments":{"frame":2,"fromLine":35,"toLine":36}}' |
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
+ source = response.body(); |
+ assertEquals(" new f(1);", source.source.substring(0, 11)); |
+ assertEquals(35, source.fromLine); |
+ assertEquals(36, source.toLine); |
+ |
+ // Test line interval way beyond this script will result in an error. |
+ json = '{"seq":0,"type":"request","command":"source",' + |
+ '"arguments":{"frame":0,"fromLine":10000,"toLine":20000}}' |
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
+ assertFalse(response.response().success); |
+ |
+ // Test without arguments. |
+ json = '{"seq":0,"type":"request","command":"source"}' |
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json)); |
+ source = response.body(); |
+ assertEquals(Debug.findScript(f).source, source.source); |
+ |
+ listenerCalled = true; |
+ } |
} catch (e) { |
exception = e |
}; |