UNPKG

1.61 kBJavaScriptView Raw
1/* eslint no-process-exit: 0 */
2
3"use strict";
4var _ = require("lodash");
5var clc = require("cli-color");
6var fs = require("fs");
7var path = require("path");
8var spawnSync = require("child_process").spawnSync;
9var Locator = require("./locator");
10var mochaSettings = require("./settings");
11var reporter = path.resolve(__dirname, "test_capture.js");
12var logger = require("testarmada-logger");
13
14module.exports = function (settings) {
15 logger.prefix = "Mocha Plugin";
16 var OUTPUT_PATH = path.resolve(settings.tempDir, "get_mocha_tests.json");
17
18 if (!fs.existsSync(settings.tempDir)) {
19 fs.mkdirSync(settings.tempDir);
20 }
21
22 var cmd = "./node_modules/.bin/mocha";
23 var args = ["--reporter", reporter];
24
25 /* istanbul ignore else */
26 if (mochaSettings.mochaOpts) {
27 args.push("--opts", mochaSettings.mochaOpts);
28 }
29
30 args = args.concat(mochaSettings.mochaTestFolders);
31 var env = _.extend({}, process.env, { MOCHA_CAPTURE_PATH: OUTPUT_PATH });
32 var capture = spawnSync(cmd, args, { env: env });
33
34 /* istanbul ignore next */
35 if (capture.status !== 0) {
36 logger.error(
37 "Could not capture mocha tests. To debug, run the following command:\n" +
38 "MOCHA_CAPTURE_PATH=%s %s %s", OUTPUT_PATH, cmd, args.join(" "));
39 process.exit(1);
40 }
41 logger.log("Scanning test files for tests ...");
42
43 var tests = fs.readFileSync(OUTPUT_PATH, "utf-8");
44 fs.unlinkSync(OUTPUT_PATH);
45
46 tests = JSON.parse(tests).map(function (t) {
47 return new Locator(t.fullTitle, t.file, t.pending, t.title);
48 });
49
50 logger.log(clc.green("Found " + tests.length + " tests in test files"));
51
52 return tests;
53};