1 | var _ = require('lodash');
|
2 | var fs = require('fs');
|
3 | var path = require("path");
|
4 | var spawnSync = require('spawn-sync');
|
5 | var Locator = require("./locator");
|
6 | var mochaSettings = require("./settings");
|
7 | var reporter = path.resolve(__dirname, 'test_capture.js');
|
8 |
|
9 | module.exports = function(settings) {
|
10 | var OUTPUT_PATH = path.resolve(settings.tempDir, 'get_mocha_tests.json');
|
11 | var cmd = './node_modules/.bin/mocha';
|
12 | var args = ['--reporter', reporter];
|
13 |
|
14 | if (mochaSettings.mochaOpts) {
|
15 | args.push('--opts', mochaSettings.mochaOpts);
|
16 | }
|
17 |
|
18 | args = args.concat(mochaSettings.mochaTestFolders);
|
19 | var env = _.extend({}, process.env, {MOCHA_CAPTURE_PATH: OUTPUT_PATH});
|
20 | var capture = spawnSync(cmd, args, {env: env});
|
21 |
|
22 | if (capture.status !== 0 || capture.stderr.toString()) {
|
23 | console.error('Could not capture mocha tests. To debug, run the following command:\nMOCHA_CAPTURE_PATH=%s %s %s', OUTPUT_PATH, cmd, args.join(' '));
|
24 | process.exit(1);
|
25 | }
|
26 |
|
27 | var tests = fs.readFileSync(OUTPUT_PATH, 'utf-8');
|
28 | fs.unlinkSync(OUTPUT_PATH);
|
29 |
|
30 | tests = JSON.parse(tests).map(function(t) {
|
31 | return new Locator(t.fullTitle, t.file, t.pending, t.title);
|
32 | });
|
33 |
|
34 | return tests;
|
35 | };
|