mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-13 06:38:48 +02:00
MozReview-Commit-ID: HA0PJfbGa9w --HG-- extra : rebase_source : 7c51ea2b2fcb231f93ec77fc7836f14f53dca6a0 extra : amend_source : f64f6e70e6a5b1579d7a47371aca5ddbc6ecfc2f extra : histedit_source : 2b13ceb2cc94bc46a65f6bde8aeb0eb3ff4b2474
130 lines
3.4 KiB
JavaScript
130 lines
3.4 KiB
JavaScript
"use strict";
|
|
|
|
Cu.import("resource://gre/modules/Extension.jsm");
|
|
|
|
/* globals ExtensionData */
|
|
|
|
const uuidGenerator = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator);
|
|
|
|
function* generateAddon(data) {
|
|
let id = uuidGenerator.generateUUID().number;
|
|
|
|
data = Object.assign({embedded: true}, data);
|
|
data.manifest = Object.assign({applications: {gecko: {id}}}, data.manifest);
|
|
|
|
let xpi = Extension.generateXPI(data);
|
|
do_register_cleanup(() => {
|
|
Services.obs.notifyObservers(xpi, "flush-cache-entry", null);
|
|
xpi.remove(false);
|
|
});
|
|
|
|
let fileURI = Services.io.newFileURI(xpi);
|
|
let jarURI = NetUtil.newURI(`jar:${fileURI.spec}!/webextension/`);
|
|
|
|
let extension = new ExtensionData(jarURI);
|
|
yield extension.loadManifest();
|
|
|
|
return extension;
|
|
}
|
|
|
|
add_task(function* testMissingDefaultLocale() {
|
|
let extension = yield generateAddon({
|
|
"files": {
|
|
"_locales/en_US/messages.json": {},
|
|
},
|
|
});
|
|
|
|
equal(extension.errors.length, 0, "No errors reported");
|
|
|
|
yield extension.initAllLocales();
|
|
|
|
equal(extension.errors.length, 1, "One error reported");
|
|
|
|
do_print(`Got error: ${extension.errors[0]}`);
|
|
|
|
ok(extension.errors[0].includes('"default_locale" property is required'),
|
|
"Got missing default_locale error");
|
|
});
|
|
|
|
|
|
add_task(function* testInvalidDefaultLocale() {
|
|
let extension = yield generateAddon({
|
|
"manifest": {
|
|
"default_locale": "en",
|
|
},
|
|
|
|
"files": {
|
|
"_locales/en_US/messages.json": {},
|
|
},
|
|
});
|
|
|
|
equal(extension.errors.length, 1, "One error reported");
|
|
|
|
do_print(`Got error: ${extension.errors[0]}`);
|
|
|
|
ok(extension.errors[0].includes("Loading locale file _locales/en/messages.json"),
|
|
"Got invalid default_locale error");
|
|
|
|
yield extension.initAllLocales();
|
|
|
|
equal(extension.errors.length, 2, "Two errors reported");
|
|
|
|
do_print(`Got error: ${extension.errors[1]}`);
|
|
|
|
ok(extension.errors[1].includes('"default_locale" property must correspond'),
|
|
"Got invalid default_locale error");
|
|
});
|
|
|
|
|
|
add_task(function* testUnexpectedDefaultLocale() {
|
|
let extension = yield generateAddon({
|
|
"manifest": {
|
|
"default_locale": "en_US",
|
|
},
|
|
});
|
|
|
|
equal(extension.errors.length, 1, "One error reported");
|
|
|
|
do_print(`Got error: ${extension.errors[0]}`);
|
|
|
|
ok(extension.errors[0].includes("Loading locale file _locales/en-US/messages.json"),
|
|
"Got invalid default_locale error");
|
|
|
|
yield extension.initAllLocales();
|
|
|
|
equal(extension.errors.length, 2, "One error reported");
|
|
|
|
do_print(`Got error: ${extension.errors[1]}`);
|
|
|
|
ok(extension.errors[1].includes('"default_locale" property must correspond'),
|
|
"Got unexpected default_locale error");
|
|
});
|
|
|
|
|
|
add_task(function* testInvalidSyntax() {
|
|
let extension = yield generateAddon({
|
|
"manifest": {
|
|
"default_locale": "en_US",
|
|
},
|
|
|
|
"files": {
|
|
"_locales/en_US/messages.json": '{foo: {message: "bar", description: "baz"}}',
|
|
},
|
|
});
|
|
|
|
equal(extension.errors.length, 1, "No errors reported");
|
|
|
|
do_print(`Got error: ${extension.errors[0]}`);
|
|
|
|
ok(extension.errors[0].includes("Loading locale file _locales\/en_US\/messages\.json: SyntaxError"),
|
|
"Got syntax error");
|
|
|
|
yield extension.initAllLocales();
|
|
|
|
equal(extension.errors.length, 2, "One error reported");
|
|
|
|
do_print(`Got error: ${extension.errors[1]}`);
|
|
|
|
ok(extension.errors[1].includes("Loading locale file _locales\/en_US\/messages\.json: SyntaxError"),
|
|
"Got syntax error");
|
|
});
|