summaryrefslogtreecommitdiffstats
path: root/addon-sdk/source/bin/node-scripts/test.addons.js
diff options
context:
space:
mode:
Diffstat (limited to 'addon-sdk/source/bin/node-scripts/test.addons.js')
-rw-r--r--addon-sdk/source/bin/node-scripts/test.addons.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/addon-sdk/source/bin/node-scripts/test.addons.js b/addon-sdk/source/bin/node-scripts/test.addons.js
new file mode 100644
index 000000000..dc7c6dfce
--- /dev/null
+++ b/addon-sdk/source/bin/node-scripts/test.addons.js
@@ -0,0 +1,57 @@
+/* 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 utils = require("./utils");
+var path = require("path");
+var fs = require("fs");
+var jpm = utils.run;
+var readParam = utils.readParam;
+var isDebug = utils.isDebug;
+
+var addonsPath = path.join(__dirname, "..", "..", "test", "addons");
+
+var binary = process.env.JPM_FIREFOX_BINARY || "nightly";
+var filterPattern = readParam("filter");
+
+describe("jpm test sdk addons", function () {
+ fs.readdirSync(addonsPath)
+ .filter(fileFilter.bind(null, addonsPath))
+ .forEach(function (file) {
+ it(file, function (done) {
+ var addonPath = path.join(addonsPath, file);
+ process.chdir(addonPath);
+
+ var options = { cwd: addonPath, env: { JPM_FIREFOX_BINARY: binary }};
+ if (process.env.DISPLAY) {
+ options.env.DISPLAY = process.env.DISPLAY;
+ }
+ if (/^e10s/.test(file)) {
+ options.e10s = true;
+ }
+
+ jpm("run", options).then(done).catch(done);
+ });
+ });
+});
+
+function fileFilter(root, file) {
+ var matcher = filterPattern && new RegExp(filterPattern);
+ if (/^(l10n-properties|simple-prefs|page-mod-debugger)/.test(file)) {
+ return false;
+ }
+
+ // filter additional add-ons when using debug builds
+ if (isDebug) {
+ if (/^(chrome|e10s)/.test(file)) {
+ return false;
+ }
+ }
+
+ if (matcher && !matcher.test(file)) {
+ return false;
+ }
+ var stat = fs.statSync(path.join(root, file))
+ return (stat && stat.isDirectory());
+}