Mypal/devtools/server/tests/unit/test_framebindings-06.js
2019-03-11 13:26:37 +03:00

61 lines
2.0 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
var gDebuggee;
var gClient;
var gThreadClient;
function run_test()
{
initTestDebuggerServer();
gDebuggee = addTestGlobal("test-grips");
gClient = new DebuggerClient(DebuggerServer.connectPipe());
gClient.connect().then(function () {
attachTestTabAndResume(gClient, "test-grips", function (aResponse, aTabClient, aThreadClient) {
gThreadClient = aThreadClient;
test_banana_environment();
});
});
do_test_pending();
}
function test_banana_environment()
{
gThreadClient.addOneTimeListener("paused",
function (aEvent, aPacket) {
equal(aPacket.type, "paused");
let env = aPacket.frame.environment;
equal(env.type, "function");
equal(env.function.name, "banana3");
let parent = env.parent;
equal(parent.type, "block");
ok("banana3" in parent.bindings.variables);
parent = parent.parent;
equal(parent.type, "function");
equal(parent.function.name, "banana2");
parent = parent.parent;
equal(parent.type, "block");
ok("banana2" in parent.bindings.variables);
parent = parent.parent;
equal(parent.type, "function");
equal(parent.function.name, "banana");
gThreadClient.resume(function () {
finishClient(gClient);
});
});
gDebuggee.eval("\
function banana(x) { \n\
return function banana2(y) { \n\
return function banana3(z) { \n\
debugger; \n\
}; \n\
}; \n\
} \n\
banana('x')('y')('z'); \n\
");
}