Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

"use strict";
AddonTestUtils.init(this);
add_task(async function testEmptySchema() {
function background() {
browser.test.assertEq(
undefined,
browser.manifest,
"browser.manifest is not defined"
);
browser.test.assertTrue(
!!browser.storage,
"browser.storage should be defined"
);
browser.test.assertEq(
undefined,
browser.contextMenus,
"browser.contextMenus should not be defined"
);
browser.test.notifyPass("schema");
}
let extension = ExtensionTestUtils.loadExtension({
background,
manifest: {
permissions: ["storage"],
},
});
await extension.startup();
await extension.awaitFinish("schema");
await extension.unload();
});
add_task(async function test_warnings_as_errors() {
let extension = ExtensionTestUtils.loadExtension({
manifest: { unrecognized_property_that_should_be_treated_as_a_warning: 1 },
});
// Tests should be run with extensions.webextensions.warnings-as-errors=true
// by default, and prevent extensions with manifest warnings from loading.
await Assert.rejects(
extension.startup(),
/unrecognized_property_that_should_be_treated_as_a_warning/,
"extension with invalid manifest should not load if warnings-as-errors=true"
);
// When ExtensionTestUtils.failOnSchemaWarnings(false) is called, startup is
// expected to succeed, as shown by the next "testUnknownProperties" test.
});
add_task(async function testUnknownProperties() {
let extension = ExtensionTestUtils.loadExtension({
manifest: {
permissions: ["unknownPermission"],
unknown_property: {},
},
background() {},
});
let { messages } = await promiseConsoleOutput(async () => {
ExtensionTestUtils.failOnSchemaWarnings(false);
await extension.startup();
ExtensionTestUtils.failOnSchemaWarnings(true);
});
AddonTestUtils.checkMessages(messages, {
expected: [
{ message: /processing permissions\.0: Value "unknownPermission"/ },
{
message:
/processing unknown_property: An unexpected property was found in the WebExtension manifest/,
},
],
});
await extension.unload();
});