/* 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 Promise = require("promise");
var Mocha = require("mocha");
var mocha = new Mocha({
  ui: "bdd",
  reporter: "spec",
  timeout: 900000
});

var isDebug = require("./node-scripts/utils").isDebug;

exports.run = function(type) {
  return new Promise(function(resolve) {
    type = type || "";
    [
      (!isDebug && /^(firefox-bin)?$/.test(type)) && require.resolve("../bin/node-scripts/test.firefox-bin"),
      (!isDebug && /^(docs)?$/.test(type)) && require.resolve("../bin/node-scripts/test.docs"),
      (!isDebug && /^(ini)?$/.test(type)) && require.resolve("../bin/node-scripts/test.ini"),
      (/^(examples)?$/.test(type)) && require.resolve("../bin/node-scripts/test.examples"),
      (!isDebug && /^(addons)?$/.test(type)) && require.resolve("../bin/node-scripts/test.addons"),
      (!isDebug && /^(modules)?$/.test(type)) && require.resolve("../bin/node-scripts/test.modules"),
    ].forEach(function(filepath) {
      filepath && mocha.addFile(filepath);
    })

    mocha.run(function(failures) {
      resolve(failures);
    });
  });
}
