зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1316780: Part 3 - Capture the current unprivileged stack in browser.test.* assertion functions. r=aswan
MozReview-Commit-ID: AxjMeoodpTX --HG-- extra : rebase_source : 9879a6d07e0b2c32067ead194106e187f8cc3fbd
This commit is contained in:
Родитель
14b9ffa5bc
Коммит
99044ae3ef
|
@ -53,19 +53,19 @@ ExtensionTestUtils.loadExtension = function(ext)
|
|||
|
||||
function testHandler(kind, pass, msg, ...args) {
|
||||
if (kind == "test-eq") {
|
||||
var [expected, actual] = args;
|
||||
SimpleTest.ok(pass, `${msg} - Expected: ${expected}, Actual: ${actual}`);
|
||||
let [expected, actual, stack] = args;
|
||||
SimpleTest.ok(pass, `${msg} - Expected: ${expected}, Actual: ${actual}`, undefined, stack);
|
||||
} else if (kind == "test-log") {
|
||||
SimpleTest.info(msg);
|
||||
} else if (kind == "test-result") {
|
||||
SimpleTest.ok(pass, msg);
|
||||
SimpleTest.ok(pass, msg, undefined, args[0]);
|
||||
}
|
||||
}
|
||||
|
||||
var handler = {
|
||||
testResult(kind, pass, msg, ...args) {
|
||||
if (kind == "test-done") {
|
||||
SimpleTest.ok(pass, msg);
|
||||
SimpleTest.ok(pass, msg, undefined, args[0]);
|
||||
return testResolve(msg);
|
||||
}
|
||||
testHandler(kind, pass, msg, ...args);
|
||||
|
|
|
@ -234,7 +234,7 @@ SimpleTest.setExpected();
|
|||
/**
|
||||
* Something like assert.
|
||||
**/
|
||||
SimpleTest.ok = function (condition, name, diag) {
|
||||
SimpleTest.ok = function (condition, name, diag, stack = null) {
|
||||
|
||||
var test = {'result': !!condition, 'name': name, 'diag': diag};
|
||||
if (SimpleTest.expected == 'fail') {
|
||||
|
@ -249,8 +249,9 @@ SimpleTest.ok = function (condition, name, diag) {
|
|||
var failureInfo = {status:"FAIL", expected:"PASS", message:"TEST-UNEXPECTED-FAIL"};
|
||||
}
|
||||
|
||||
var stack = null;
|
||||
if (!condition) {
|
||||
if (condition) {
|
||||
stack = null;
|
||||
} else if (!stack) {
|
||||
stack = (new Error).stack.replace(/^(.*@)http:\/\/mochi.test:8888\/tests\//gm, ' $1').split('\n');
|
||||
stack.splice(0, 1);
|
||||
stack = stack.join('\n');
|
||||
|
|
|
@ -78,8 +78,12 @@ function toSource(value) {
|
|||
function makeTestAPI(context) {
|
||||
const {extension} = context;
|
||||
|
||||
function getStack() {
|
||||
return new context.cloneScope.Error().stack.replace(/^/gm, " ");
|
||||
}
|
||||
|
||||
function assertTrue(value, msg) {
|
||||
extension.emit("test-result", Boolean(value), String(msg));
|
||||
extension.emit("test-result", Boolean(value), String(msg), getStack());
|
||||
}
|
||||
|
||||
return {
|
||||
|
@ -89,15 +93,15 @@ function makeTestAPI(context) {
|
|||
},
|
||||
|
||||
notifyPass(msg) {
|
||||
extension.emit("test-done", true, msg);
|
||||
extension.emit("test-done", true, msg, getStack());
|
||||
},
|
||||
|
||||
notifyFail(msg) {
|
||||
extension.emit("test-done", false, msg);
|
||||
extension.emit("test-done", false, msg, getStack());
|
||||
},
|
||||
|
||||
log(msg) {
|
||||
extension.emit("test-log", true, msg);
|
||||
extension.emit("test-log", true, msg, getStack());
|
||||
},
|
||||
|
||||
fail(msg) {
|
||||
|
@ -125,7 +129,7 @@ function makeTestAPI(context) {
|
|||
if (!equal && expected === actual) {
|
||||
actual += " (different)";
|
||||
}
|
||||
extension.emit("test-eq", equal, String(msg), expected, actual);
|
||||
extension.emit("test-eq", equal, String(msg), expected, actual, getStack());
|
||||
},
|
||||
|
||||
assertRejects(promise, expectedError, msg) {
|
||||
|
|
|
@ -18,6 +18,7 @@ function loadExtensionAndInterceptTest(extensionData) {
|
|||
let testDone = new Promise(resolve => { testResolve = resolve; });
|
||||
let handler = {
|
||||
testResult(...result) {
|
||||
result.pop();
|
||||
results.push(result);
|
||||
SimpleTest.info(`Received test result: ${JSON.stringify(result)}`);
|
||||
},
|
||||
|
|
Загрузка…
Ссылка в новой задаче