Bug 1299411 - Add test.assertLastError/assertNoLastError
In callback-based APIs, rejected promises can be used to detect errors,
but in event handlers, that is not possible, so we have to test the
value of lastError in order to see if the (expected) error message
really occurs.
MozReview-Commit-ID: 9MEBqwv0sXe
--- a/toolkit/components/extensions/ext-c-test.js
+++ b/toolkit/components/extensions/ext-c-test.js
@@ -35,14 +35,41 @@ function testApiFactory(context) {
actual += " (different)";
}
context.childManager.callParentFunctionNoReturn("test.assertEq", [
expected,
actual,
String(msg),
]);
},
+
+ assertNoLastError(message) {
+ let {lastError} = context;
+ context.childManager.callParentFunctionNoReturn("test.assertEq", [
+ null,
+ lastError ? "lastError.message: " + lastError.message : lastError,
+ message,
+ ]);
+ },
+
+ assertLastError(expectedError) {
+ let {lastError} = context;
+ let actualError = "<lastError not set>";
+ if (lastError) {
+ let {message} = lastError;
+ if (typeof message == "string") {
+ actualError = message;
+ } else {
+ actualError = "(NOT A STRING) " + message;
+ }
+ }
+ context.childManager.callParentFunctionNoReturn("test.assertEq", [
+ expectedError,
+ actualError,
+ "Expected lastError",
+ ]);
+ },
},
};
}
extensions.registerSchemaAPI("test", "addon_child", testApiFactory);
extensions.registerSchemaAPI("test", "content_child", testApiFactory);
--- a/toolkit/components/extensions/schemas/test.json
+++ b/toolkit/components/extensions/schemas/test.json
@@ -109,23 +109,23 @@
{"type": "any", "name": "expected", "optional": true},
{"type": "any", "name": "actual", "optional": true},
{"type": "string", "name": "message", "optional": true}
]
},
{
"name": "assertNoLastError",
"type": "function",
- "unsupported": true,
- "parameters": []
+ "parameters": [
+ {"type": "string", "name": "message"}
+ ]
},
{
"name": "assertLastError",
"type": "function",
- "unsupported": true,
"parameters": [
{"type": "string", "name": "expectedError"}
]
},
{
"name": "assertThrows",
"type": "function",
"unsupported": true,
--- a/toolkit/components/extensions/test/mochitest/test_ext_test.html
+++ b/toolkit/components/extensions/test/mochitest/test_ext_test.html
@@ -49,16 +49,18 @@ function testScript() {
browser.test.notifyPass("dot notifyPass");
browser.test.notifyFail("dot notifyFail");
browser.test.log("dot log");
browser.test.fail("dot fail");
browser.test.succeed("dot succeed");
browser.test.assertTrue(true);
browser.test.assertFalse(false);
browser.test.assertEq("", "");
+ browser.test.assertNoLastError("dot assertNoLastError");
+ browser.test.assertLastError("dot assertLastError");
let obj = {};
let arr = [];
let dom = document.createElement("body");
browser.test.assertTrue(obj, "Object truthy");
browser.test.assertTrue(arr, "Array truthy");
browser.test.assertTrue(dom, "Element truthy");
browser.test.assertTrue(true, "True truthy");
@@ -103,16 +105,18 @@ function verifyTestResults(results, shor
["test-done", true, "dot notifyPass"],
["test-done", false, "dot notifyFail"],
["test-log", true, "dot log"],
["test-result", false, "dot fail"],
["test-result", true, "dot succeed"],
["test-result", true, "undefined"],
["test-result", true, "undefined"],
["test-eq", true, "undefined", "", ""],
+ ["test-eq", true, "dot assertNoLastError", "null", "null"],
+ ["test-eq", false, "Expected lastError", "dot assertLastError", "<lastError not set>"],
["test-result", true, "Object truthy"],
["test-result", true, "Array truthy"],
["test-result", true, "Element truthy"],
["test-result", true, "True truthy"],
["test-result", false, "False truthy"],
["test-result", false, "Null truthy"],
["test-result", false, "Void truthy"],