summaryrefslogtreecommitdiffstats
path: root/addon-sdk/source/test/addons/require/main.js
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /addon-sdk/source/test/addons/require/main.js
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'addon-sdk/source/test/addons/require/main.js')
-rw-r--r--addon-sdk/source/test/addons/require/main.js87
1 files changed, 87 insertions, 0 deletions
diff --git a/addon-sdk/source/test/addons/require/main.js b/addon-sdk/source/test/addons/require/main.js
new file mode 100644
index 000000000..53391f08b
--- /dev/null
+++ b/addon-sdk/source/test/addons/require/main.js
@@ -0,0 +1,87 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+"use strict";
+
+var { isNative } = require("@loader/options");
+
+exports["test local vs sdk module"] = function (assert) {
+ assert.notEqual(require("list"),
+ require("sdk/util/list"),
+ "Local module takes the priority over sdk modules");
+ assert.ok(require("list").local,
+ "this module is really the local one");
+}
+
+if (!isNative) {
+ exports["test 3rd party vs sdk module"] = function (assert) {
+ // We are testing with a 3rd party package called `tabs` with 3 modules
+ // main, page-mod and third-party
+
+ // the only way to require 3rd party package modules are to use absolute paths
+ // require("tabs/main"), require("tabs/page-mod"),
+ // require("tabs/third-party") and also require("tabs") which will refer
+ // to tabs's main package module.
+
+ // So require(page-mod) shouldn't map the 3rd party
+ assert.equal(require("page-mod"),
+ require("sdk/page-mod"),
+ "Third party modules don't overload sdk modules");
+
+ assert.ok(require("page-mod").PageMod,
+ "page-mod module is really the sdk one");
+
+ assert.equal(require("tabs/page-mod").id, "page-mod",
+ "tabs/page-mod is the 3rd party");
+
+ // But require(tabs) will map to 3rd party main module
+ // *and* overload the sdk module
+ // and also any local module with the same name
+ assert.equal(require("tabs").id, "tabs-main",
+ "Third party main module overload sdk modules");
+
+ assert.equal(require("tabs"),
+ require("tabs/main"),
+ "require(tabs) maps to require(tabs/main)");
+
+ // So that you have to use relative path to ensure getting the local module
+ assert.equal(require("./tabs").id,
+ "local-tabs",
+ "require(./tabs) maps to the local module");
+
+ // It should still be possible to require sdk module with absolute path
+ assert.ok(require("sdk/tabs").open,
+ "We can bypass this overloading with absolute path to sdk modules");
+
+ assert.equal(require("sdk/tabs"),
+ require("addon-kit/tabs"),
+ "Old and new layout both work");
+ }
+}
+
+// /!\ Always use distinct module for each test.
+// Otherwise, the linker can correctly parse and allow the first usage of it
+// but still silently fail on the second.
+
+exports.testRelativeRequire = function (assert) {
+ assert.equal(require('./same-folder').id, 'same-folder');
+}
+
+exports.testRelativeSubFolderRequire = function (assert) {
+ assert.equal(require('./sub-folder/module').id, 'sub-folder');
+}
+
+exports.testMultipleRequirePerLine = function (assert) {
+ var a=require('./multiple/a'),b=require('./multiple/b');
+ assert.equal(a.id, 'a');
+ assert.equal(b.id, 'b');
+}
+
+exports.testSDKRequire = function (assert) {
+ assert.deepEqual(Object.keys(require('sdk/page-worker')), ['Page']);
+ if (!isNative) {
+ assert.equal(require('page-worker'), require('sdk/page-worker'));
+ }
+}
+
+require("sdk/test/runner").runTestsFromModule(module);