1 |
|
2 |
|
3 | "use strict";
|
4 | var _ = require("lodash");
|
5 | var clc = require("cli-color");
|
6 | var fs = require("fs");
|
7 | var path = require("path");
|
8 | var spawnSync = require("child_process").spawnSync;
|
9 | var Locator = require("./locator");
|
10 | var mochaSettings = require("./settings");
|
11 | var reporter = path.resolve(__dirname, "test_capture.js");
|
12 | var logger = require("testarmada-logger");
|
13 |
|
14 | module.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 |
|
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 |
|
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 | };
|