| Index: test/browser/_bootstrap.js | 
| =================================================================== | 
| --- a/test/browser/_bootstrap.js | 
| +++ b/test/browser/_bootstrap.js | 
| @@ -12,87 +12,53 @@ | 
| * GNU General Public License for more details. | 
| * | 
| * You should have received a copy of the GNU General Public License | 
| * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | 
| */ | 
| "use strict"; | 
| -/* globals nodeunit */ | 
| -require("nodeunit"); | 
| - | 
| -function runTests(moduleNames) | 
| -{ | 
| - function bold(str) | 
| - { | 
| - return "\u001B[1m" + str + "\u001B[22m"; | 
| - } | 
| - | 
| - function ok(str) | 
| - { | 
| - return "\u001B[32m" + str + "\u001B[39m"; | 
| - } | 
| +require("mocha"); | 
| - function error(str) | 
| - { | 
| - return "\u001B[31m" + str + "\u001B[39m"; | 
| - } | 
| - | 
| - let tests = {}; | 
| - for (let module of moduleNames) | 
| - tests[module] = nodeunit.testCase(require("./" + module + ".js")); | 
| +if (typeof window._consoleLogs == "undefined") | 
| + window._consoleLogs = {passes: 0, failures: 0, log: []}; | 
| - return new Promise((resolve, reject) => | 
| - { | 
| - nodeunit.runModules(tests, { | 
| - moduleStart(name) | 
| - { | 
| - if (typeof window._consoleLogs == "undefined") | 
| - window._consoleLogs = {failures: 0, log: []}; | 
| - console.log(bold(name)); | 
| - }, | 
| - testDone(name, assertions) | 
| - { | 
| - let errors = assertions.filter(assertion => assertion.failed()) | 
| - .map(assertion => assertion.error); | 
| +function Reporter(runner) | 
| +{ | 
| + mocha.reporters.Base.call(this, runner); | 
| - if (errors.length == 0) | 
| - console.log("\u2714 " + name); | 
| - else | 
| - { | 
| - console.log(error("\u2716 " + name) + "\n"); | 
| - errors.forEach(e => | 
| - { | 
| - if (e.stack) | 
| - console.log(e.stack); | 
| - else | 
| - console.log(String(e)); | 
| - console.log(""); | 
| - }); | 
| - } | 
| - }, | 
| - done(assertions) | 
| - { | 
| - let failures = assertions.filter(assertion => assertion.failed()); | 
| - if (failures.length) | 
| - { | 
| - window._consoleLogs.failures += failures.length; | 
| - console.log( | 
| - "\n" + | 
| - bold(error("FAILURES: ")) + | 
| - failures.length + "/" + assertions.length + " assertions failed" | 
| - ); | 
| - } | 
| - else | 
| - { | 
| - console.log( | 
| - `\n ${bold(ok("OK: "))}${assertions.length} assertions (${assertions.duration}ms)` | 
| - ); | 
| - } | 
| + runner.on("pass", test => | 
| + { | 
| + window._consoleLogs.passes++; | 
| + console.log("pass: %s", test.fullTitle()); | 
| + }); | 
| - resolve(); | 
| - } | 
| - }); | 
| + runner.on("fail", (test, err) => | 
| + { | 
| + window._consoleLogs.failures++; | 
| + console.log("fail: %s -- error: %s", test.fullTitle(), err.message); | 
| + }); | 
| + | 
| + runner.on("end", () => | 
| + { | 
| + console.log("end: %d/%d", window._consoleLogs.passes, | 
| + window._consoleLogs.passes + window._consoleLogs.failures); | 
| }); | 
| } | 
| -module.exports = runTests; | 
| +function run(moduleNames) | 
| +{ | 
| + mocha.setup("bdd"); | 
| + mocha.reporter = Reporter; | 
| + | 
| + for (let module of moduleNames) | 
| + { | 
| + describe(module, () => | 
| + { | 
| + require("./" + module + ".js"); | 
| + }); | 
| + } | 
| + | 
| + mocha.run(); | 
| +} | 
| + | 
| +module.exports = run; |