mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-27 12:15:33 +00:00
30b2b7ce44
For simple rules like function spacing, we can auto-fix these across the code base so they are followed in a consistent way. To generate this patch, I ran: ./mach eslint devtools --no-ignore --fix After this, I reverted any changes to third party files that we really do want to ignore. MozReview-Commit-ID: 6Q8BApkAW20
163 lines
3.4 KiB
JavaScript
163 lines
3.4 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
// Test getDisplayString.
|
|
|
|
Cu.import("resource://testing-common/PromiseTestUtils.jsm", this);
|
|
|
|
var gDebuggee;
|
|
var gClient;
|
|
var gThreadClient;
|
|
|
|
function run_test()
|
|
{
|
|
initTestDebuggerServer();
|
|
gDebuggee = addTestGlobal("test-grips");
|
|
gDebuggee.eval(function stopMe(arg1) {
|
|
debugger;
|
|
}.toString());
|
|
|
|
gClient = new DebuggerClient(DebuggerServer.connectPipe());
|
|
gClient.connect().then(function () {
|
|
attachTestTabAndResume(gClient, "test-grips", function (aResponse, aTabClient, aThreadClient) {
|
|
gThreadClient = aThreadClient;
|
|
test_display_string();
|
|
});
|
|
});
|
|
do_test_pending();
|
|
}
|
|
|
|
function test_display_string()
|
|
{
|
|
const testCases = [
|
|
{
|
|
input: "new Boolean(true)",
|
|
output: "true"
|
|
},
|
|
{
|
|
input: "new Number(5)",
|
|
output: "5"
|
|
},
|
|
{
|
|
input: "new String('foo')",
|
|
output: "foo"
|
|
},
|
|
{
|
|
input: "new Map()",
|
|
output: "[object Map]"
|
|
},
|
|
{
|
|
input: "[,,,,,,,]",
|
|
output: ",,,,,,"
|
|
},
|
|
{
|
|
input: "[1, 2, 3]",
|
|
output: "1,2,3"
|
|
},
|
|
{
|
|
input: "[undefined, null, true, 'foo', 5]",
|
|
output: ",,true,foo,5"
|
|
},
|
|
{
|
|
input: "[{},{}]",
|
|
output: "[object Object],[object Object]"
|
|
},
|
|
{
|
|
input: "(" + function () {
|
|
const arr = [1];
|
|
arr.push(arr);
|
|
return arr;
|
|
} + ")()",
|
|
output: "1,"
|
|
},
|
|
{
|
|
input: "{}",
|
|
output: "[object Object]"
|
|
},
|
|
{
|
|
input: "Object.create(null)",
|
|
output: "[object Object]"
|
|
},
|
|
{
|
|
input: "new Error('foo')",
|
|
output: "Error: foo"
|
|
},
|
|
{
|
|
input: "new SyntaxError()",
|
|
output: "SyntaxError"
|
|
},
|
|
{
|
|
input: "new ReferenceError('')",
|
|
output: "ReferenceError"
|
|
},
|
|
{
|
|
input: "(" + function () {
|
|
const err = new Error("bar");
|
|
err.name = "foo";
|
|
return err;
|
|
} + ")()",
|
|
output: "foo: bar"
|
|
},
|
|
{
|
|
input: "() => {}",
|
|
output: "() => {}"
|
|
},
|
|
{
|
|
input: "function (foo, bar) {}",
|
|
output: "function (foo, bar) {}"
|
|
},
|
|
{
|
|
input: "function foo(bar) {}",
|
|
output: "function foo(bar) {}"
|
|
},
|
|
{
|
|
input: "Array",
|
|
output: Array + ""
|
|
},
|
|
{
|
|
input: "/foo[bar]/g",
|
|
output: "/foo[bar]/g"
|
|
},
|
|
{
|
|
input: "new Proxy({}, {})",
|
|
output: "[object Object]"
|
|
},
|
|
{
|
|
input: "Promise.resolve(5)",
|
|
output: "Promise (fulfilled: 5)"
|
|
},
|
|
{
|
|
// This rejection is left uncaught, see expectUncaughtRejection below.
|
|
input: "Promise.reject(new Error())",
|
|
output: "Promise (rejected: Error)"
|
|
},
|
|
{
|
|
input: "new Promise(function () {})",
|
|
output: "Promise (pending)"
|
|
}
|
|
];
|
|
|
|
PromiseTestUtils.expectUncaughtRejection(/Error/);
|
|
|
|
gThreadClient.addOneTimeListener("paused", function (aEvent, aPacket) {
|
|
const args = aPacket.frame.arguments;
|
|
|
|
(function loop() {
|
|
const objClient = gThreadClient.pauseGrip(args.pop());
|
|
objClient.getDisplayString(function ({ displayString }) {
|
|
do_check_eq(displayString, testCases.pop().output);
|
|
if (args.length) {
|
|
loop();
|
|
} else {
|
|
gThreadClient.resume(function () {
|
|
finishClient(gClient);
|
|
});
|
|
}
|
|
});
|
|
})();
|
|
});
|
|
|
|
const inputs = testCases.map(({ input }) => input).join(",");
|
|
gDebuggee.eval("stopMe(" + inputs + ")");
|
|
}
|