зеркало из https://github.com/mozilla/pjs.git
Bug 749258: Have toolkit/devtools/debugger xpcshell tests register a listener for Components.utils.reportError, so tests fail when they throw an exception. r=past
This commit is contained in:
Родитель
8b6cd6b2c0
Коммит
433ec64664
|
@ -375,10 +375,10 @@ DebuggerClient.prototype = {
|
|||
*/
|
||||
request: function DC_request(aRequest, aOnResponse) {
|
||||
if (!this._connected) {
|
||||
throw "Have not yet received a hello packet from the server.";
|
||||
throw Error("Have not yet received a hello packet from the server.");
|
||||
}
|
||||
if (!aRequest.to) {
|
||||
throw "Request packet has no destination.";
|
||||
throw Error("Request packet has no destination.");
|
||||
}
|
||||
|
||||
this._pendingRequests.push({ to: aRequest.to,
|
||||
|
@ -449,7 +449,7 @@ DebuggerClient.prototype = {
|
|||
onResponse(aPacket);
|
||||
}
|
||||
} catch(ex) {
|
||||
dumpn("Error handling response: " + ex + " - " + ex.stack);
|
||||
dumpn("Error handling response: " + ex + " - stack:\n" + ex.stack);
|
||||
Cu.reportError(ex);
|
||||
}
|
||||
|
||||
|
@ -536,7 +536,7 @@ ThreadClient.prototype = {
|
|||
|
||||
_assertPaused: function TC_assertPaused(aCommand) {
|
||||
if (!this.paused) {
|
||||
throw aCommand + " command sent while not paused.";
|
||||
throw Error(aCommand + " command sent while not paused.");
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -63,6 +63,17 @@ function dbg_assert(cond, e) {
|
|||
}
|
||||
}
|
||||
|
||||
/* Turn the error e into a string, without fail. */
|
||||
function safeErrorString(aError) {
|
||||
try {
|
||||
var s = aError.toString();
|
||||
if (typeof s === "string")
|
||||
return s;
|
||||
} catch (ee) { }
|
||||
|
||||
return "<failed trying to find error description>";
|
||||
}
|
||||
|
||||
loadSubScript.call(this, "chrome://global/content/devtools/dbg-transport.js");
|
||||
|
||||
// XPCOM constructors
|
||||
|
@ -445,11 +456,14 @@ DebuggerServerConnection.prototype = {
|
|||
} catch(e) {
|
||||
Cu.reportError(e);
|
||||
ret = { error: "unknownError",
|
||||
message: "An unknown error has occurred while processing request." };
|
||||
message: ("error occurred while processing '" + aPacket.type +
|
||||
"' request: " + safeErrorString(e)) };
|
||||
}
|
||||
} else {
|
||||
ret = { error: "unrecognizedPacketType",
|
||||
message: 'Actor "' + actor.actorID + '" does not recognize the packet type "' + aPacket.type + '"' };
|
||||
message: ('Actor "' + actor.actorID +
|
||||
'" does not recognize the packet type "' +
|
||||
aPacket.type + '"') };
|
||||
}
|
||||
|
||||
if (!ret) {
|
||||
|
|
|
@ -16,6 +16,52 @@ Services.prefs.setBoolPref("devtools.debugger.log", true);
|
|||
Cu.import("resource:///modules/devtools/dbg-server.jsm");
|
||||
Cu.import("resource:///modules/devtools/dbg-client.jsm");
|
||||
|
||||
// Convert an nsIScriptError 'aFlags' value into an appropriate string.
|
||||
function scriptErrorFlagsToKind(aFlags) {
|
||||
var kind;
|
||||
if (aFlags & Ci.nsIScriptError.warningFlag)
|
||||
kind = "warning";
|
||||
if (aFlags & Ci.nsIScriptError.exceptionFlag)
|
||||
kind = "exception";
|
||||
else
|
||||
kind = "error";
|
||||
|
||||
if (aFlags & Ci.nsIScriptError.strictFlag)
|
||||
kind = "strict " + kind;
|
||||
|
||||
return kind;
|
||||
}
|
||||
|
||||
// Register a console listener, so console messages don't just disappear
|
||||
// into the ether.
|
||||
let errorCount = 0;
|
||||
let listener = {
|
||||
observe: function (aMessage) {
|
||||
errorCount++;
|
||||
try {
|
||||
// If we've been given an nsIScriptError, then we can print out
|
||||
// something nicely formatted, for tools like Emacs to pick up.
|
||||
var scriptError = aMessage.QueryInterface(Ci.nsIScriptError);
|
||||
dump(aMessage.sourceName + ":" + aMessage.lineNumber + ": " +
|
||||
scriptErrorFlagsToKind(aMessage.flags) + ": " +
|
||||
aMessage.errorMessage + "\n");
|
||||
var string = aMessage.errorMessage;
|
||||
} catch (x) {
|
||||
// Be a little paranoid with message, as the whole goal here is to lose
|
||||
// no information.
|
||||
try {
|
||||
var string = "" + aMessage.message;
|
||||
} catch (x) {
|
||||
var string = "<error converting error message to string>";
|
||||
}
|
||||
}
|
||||
|
||||
do_throw("head_dbg.js got console message: " + string + "\n");
|
||||
}
|
||||
};
|
||||
|
||||
let consoleService = Cc["@mozilla.org/consoleservice;1"].getService(Ci.nsIConsoleService);
|
||||
consoleService.registerListener(listener);
|
||||
|
||||
function check_except(func)
|
||||
{
|
||||
|
|
Загрузка…
Ссылка в новой задаче